2012-12-31 40 views
1

可能重复:
Google Map V3 : Only some markers are displayed谷歌地图中查看多个项目的物业地址

我需要与谷歌地图帮助..我有1个物业工作下面的代码显示在地图上,但我有很多地址/属性在同一张地图上显示,并没有成功。

var address = "<?php echo $address?>"; 
     var map = new google.maps.Map(document.getElementById('map'), { 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      zoom: 16 
     }); 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 
      'address': address 
     }, 
     function(results, status) { 
      if(status == google.maps.GeocoderStatus.OK) { 
      new google.maps.Marker({ 
       position: results[0].geometry.location, 
       map: map 
      }); 
      map.setCenter(results[0].geometry.location); 
      } 
     }); 

从PHP我得到的地址,但JS端脚本对我来说很难..请帮忙告诉我需要改变什么,所以在ADRESS是JS数组以及如何显示所有的地址。

+0

很可能你必须调用geocoder的次数,并为每个创建一个标记。 – tchap

+0

多数民众赞成,但如何做到这一点?正如我所说我不熟悉JS脚本方面..我相信一些litle更改需要适用于代码,但它们是什么? – thecore7

回答

0

你正在寻找一个普通的JavaScript for遍历数组你我猜,所以这应该是这样的(假设address是一个有效的JavaScript数组):

// address = ... //define address array here 

var map = new google.maps.Map(document.getElementById('map'), { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     zoom: 16 
    }); 
var geocoder = new google.maps.Geocoder(); 

var nbAddresses = address.length; 

for (var i=0;i<nbAddresses;i++) 
{ 

    geocoder.geocode({ 
      'address': address[i] 
    }, 
    function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK) { 
     new google.maps.Marker({ 
      position: results[0].geometry.location, 
      map: map 
     }); 
     map.setCenter(results[0].geometry.location); 
     } 
    }); 

} 

编辑:请注意,这个代码片段可以优化,它只是一个快速的方法来解决(无双关语意图)您的需要;)

+0

亲爱的tchap,感谢您的回复,但代码不起作用或至少不工作时,我复制/粘贴它.. Iget错误未定义的geocoder.geocode函数.. – thecore7

+1

这将工作~10个地址,然后开始获取OVER_QUERY_LIMIT错误和失败(不显示标记,因为它不检查返回的状态)。 – geocodezip

+0

让我们替换var address =“<?php echo $ address?>”; address1 ='adress1';和address2 ='adress2';而不是那个PHP变量 - 这将是esier我明白什么和在哪里可以替换 – thecore7