【发布时间】:2011-07-05 06:58:46
【问题描述】:
我正在使用 Google Maps V3 API 并使用其地理编码器对地图上用户点击的点进行反向地理编码。
在 DOM 完全加载时加载地理编码功能
$(function() {
reverse_geocode(40.714224,-73.961452);
});
进行反向地理编码的函数:
function reverse_geocode(lat,lng) {
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(10,-10);
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert('asdasd');
} else {
alert("Geocoder failed due to: " + status);
}
});
}
如果我在页面第一次加载时调用reverse_geocode 函数,一切正常并且alert() 被调用。
但是,如果我调用reverse_geocode() 仅在地图上右键单击然后在 div 上单击鼠标触发,使用下面的代码,什么都不会发生!知道出了什么问题吗?
google.maps.event.addListener(map, "rightclick", function(event) {
//some code not shown
$("#info_rightclick_top").click(function(e) {
info_ok_handleclick();
});
});
function info_ok_handleclick() {
$("#info_ok").click(function(e) {
var lat = marker_search_location.getPosition().lat();
var lng = marker_search_location.getPosition().lng();
var latlng = lat + "_" + lng;
reverse_geocode(10,-10);
// some code hidden
});
【问题讨论】:
-
这里的事件处理程序太多了。您的 info_ok_handlerclick()。附加另一个处理程序,因此您需要在调用反向地理编码功能之前单击 3 次。理论上,您只需要 2 个事件侦听器 - 1 个用于右键单击(假设用于显示菜单的功能)和一个 #info_ok 处理程序来进行地理编码。您的 info_ok 处理程序不需要包装在函数中,只需放入 document.ready jquery 块...
标签: php javascript jquery google-maps google-maps-api-3