使用googlemap v3反向地理编码samplesource制作此源
var map;
var geocoder;
var marker;
function initialize() {
geocoder = new google.maps.Geocoder();
var mapOptions = {
zoom : 14,
center : new google.maps.LatLng(30, 30)
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
function codeLatLng() {
var latlng = new google.maps.LatLng(30, 30);
alert("call codeLatLng() 1");
geocoder.geocode({'latLng': latlng}, function(results, status) {
alert("call codeLatLng() 2");
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
} else {
alert('No results found');
}
} else {
alert('Geocoder failed due to: ' + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
codeLatLng();
我调用函数codeLatLng();代码的最后一行
所以调用函数codeLatLng()和警告消息“call codeLatLng()1
但不调用“call codeLatLng()2”并且代码不起作用
我的代码有什么问题?
答案 0 :(得分:2)
我的代码有什么问题?
您正在地图之前执行codeLatLng并初始化地理编码器变量(在DOM加载完成后初始化运行,codeLatLng立即运行)。
这会更好:
var map;
var geocoder;
var marker;
function initialize() {
geocoder = new google.maps.Geocoder();
var mapOptions = {
zoom : 14,
center : new google.maps.LatLng(30, 30)
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
// map and geocoder initialized
codeLatLng();
}
function codeLatLng() {
var latlng = new google.maps.LatLng(30, 30);
alert("call codeLatLng() 1");
geocoder.geocode({'latLng': latlng}, function(results, status) {
alert("call codeLatLng() 2");
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
} else {
alert('No results found');
}
} else {
alert('Geocoder failed due to: ' + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);