我很难正确获取谷歌地图标记的信息窗口中的信息。标记已经放置在正确的位置,但是第一个和第二个信息窗口都传递了第二个地点的名称。
<script>
function initMap() {
var mapOptions = {
zoom: 14,
scrollwheel: false,
center: new google.maps.LatLng(31.44, -100.47)
}
var map = new google.maps.Map(document.getElementById('super_map'), mapOptions);
var geocoder = new google.maps.Geocoder();
var addresses = ["3000 Main St San Angelo TX", "4001 Sunset Dr San Angelo TX"];
var names = ['First Place', 'Second Place'];
for(var x = 0; x < addresses.length; x++){
var name = names[x];
geocoder.geocode( { 'address': addresses[x]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
animation: google.maps.Animation.DROP,
});
var contentString = name;
var infowindow = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
});
}
}
google.maps.event.addDomListener(window, 'load', initMap);
google.maps.event.addDomListener(window, 'resize', initMap);
</script>
我已经尝试使用setContent进行设置,但结果相同...
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(names[0]);
infowindow.open(map,marker);
});
geocoder.geocode
是异步的,当回调函数被调用时,即在你的 for 循环结束后,name
将是最后一个names[x]
。 - Jaromanda X