繁体   English   中英

谷歌地图第3版未显示所有标记

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM