[英]google maps v3 not displaying all markers
我在通过GeoCode的数组中有19个邮政编码,它似乎可以正常工作,但是只有11个可以显示。 我已经搜索并尝试了所有内容。 我才刚刚开始学习JavaScript和map API,所以我确定我的拼写错误。
var latlng = new google.maps.LatLng(55.378, -3.435);
myOptions = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("my_canvas"),myOptions);
var geocoder = new google.maps.Geocoder();
var places = ["AB12 3AG","BS11 8AT","IG11 0HN","CA3 0PJ","NR19 1JG","IP11 3HZ","ML4 3LR","WF12 7TH","L33 7YE","M30 9QG","NG18 5DQ","MK12 5QL","PE6 0BN","ME10 3RL","SO40 9HN","B79 7TD","TS2 1RP","GU17 0NP","WV10 7EL"];
for(i = 0; i < places.length; i++){
var address = places[i];
geocoder.geocode({'address':address}, function(results){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: address
});
});
}
我认为所有邮政编码都加载了,因为所有标记的标题都是数组“ WV10”中的最后一个地址,但是就像我说的那样,在19个位置中只有11个显示。
问题是您正在循环中创建函数。 至少这是标签的问题。 一种解决方案是通过在循环内调用函数来创建新作用域:
for(i = 0; i < places.length; i++){
(function(place) {
geocoder.geocode({'address':place}, function(results){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: place
});
});
}(places[i]));
}
这也可以解决显示问题,但是我不确定。 可能是某些地方决定了相同或非常接近的位置吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.