【发布时间】:2017-01-09 22:27:28
【问题描述】:
我很难在 Google 地图标记上的信息窗口中正确获取信息。标记位于正确的位置,但这是将第二个位置的名称传递到第一个和第二个信息窗口中。
<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将是姓氏[x] - -
感谢您提供的信息。我会看看是否可以将您提供的链接中的课程应用于我的情况。
标签: javascript google-maps google-maps-api-3