在谷歌地图中获取纬度和经度的位置地址

我想点击谷歌地图后获取纬度和经度从他们获得位置的地方,并将其(地址)放在提交的input#searchTextField 。 我该怎么办?

我试过,但不适合我:

演示: http //jsfiddle.net/DXkZJ/

  
$(function () { var lat = 44.88623409320778, lng = -87.86480712897173, latlng = new google.maps.LatLng(lat, lng), image = 'http://sofzh.miximages.com/javascript/blue-dot.png'; //zoomControl: true, //zoomControlOptions: google.maps.ZoomControlStyle.LARGE, var mapOptions = { center: new google.maps.LatLng(lat, lng), zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP, panControl: true, panControlOptions: { position: google.maps.ControlPosition.TOP_RIGHT }, zoomControl: true, zoomControlOptions: { style: google.maps.ZoomControlStyle.LARGE, position: google.maps.ControlPosition.TOP_left } }, map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions), marker = new google.maps.Marker({ position: latlng, map: map, icon: image }); var input = document.getElementById('searchTextField'); var autocomplete = new google.maps.places.Autocomplete(input, { types: ["geocode"] }); autocomplete.bindTo('bounds', map); var infowindow = new google.maps.InfoWindow(); google.maps.event.addListener(autocomplete, 'place_changed', function (event) { infowindow.close(); var place = autocomplete.getPlace(); if (place.geometry.viewport) { map.fitBounds(place.geometry.viewport); } else { map.setCenter(place.geometry.location); map.setZoom(17); } moveMarker(place.name, place.geometry.location); alert(place.name); $('.MapLat').val(place.geometry.location.lat()); $('.MapLon').val(place.geometry.location.lng()); }); google.maps.event.addListener(map, 'click', function (event) { $('.MapLat').val(event.latLng.lat()); $('.MapLon').val(event.latLng.lng()); alert(event.latLng.place.name) }); $("#searchTextField").focusin(function () { $(document).keypress(function (e) { if (e.which == 13) { return false; infowindow.close(); var firstResult = $(".pac-container .pac-item:first").text(); var geocoder = new google.maps.Geocoder(); geocoder.geocode({ "address": firstResult }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { var lat = results[0].geometry.location.lat(), lng = results[0].geometry.location.lng(), placeName = results[0].address_components[0].long_name, latlng = new google.maps.LatLng(lat, lng); moveMarker(placeName, latlng); $("input").val(firstResult); alert(firstResult) } }); } }); }); function moveMarker(placeName, latlng) { marker.setIcon(image); marker.setPosition(latlng); infowindow.setContent(placeName); //infowindow.open(map, marker); } });​

好的,首先你需要反向地理编码,而不是常规的地理编码,因为你是从纬度/经度变成地址而不是相反(参见参考资料 )。 其次,你的关键听众永远不会做任何事情,因为它几乎立即表示return false ; 在这种情况下,您可能需要event.stopPropogation() 。 此外,谷歌地图将拦截您在DOM树中比document更深的鼠标点击,因此无论如何都不会高度倾听事件。

所以我所做的是将您的地理编码更改为反向地理编码,以及将文档侦听器中的代码移动到Google监听器中。 如果要保留在焦点上添加的侦听器的行为,可以在地图对象上创建一个新的侦听器。 这是一个工作jsfiddle演示这些变化 ,希望这有帮助。

看一下gmap开发者api。 主题反向地理编码(地址查找) 。 你会得到你的答案。

只需在moveMarker()函数后添加此代码即可

 $("#map_canvas").click(function() { $("#searchTextField").val($(".MapLat").val() +", "+$(".MapLon").val()); }); 

希望,这是你需要的:)