Google maps 通过提供地址在google地图上显示多个标记

Google maps 通过提供地址在google地图上显示多个标记,google-maps,maps,google-maps-markers,google-maps-api-2,Google Maps,Maps,Google Maps Markers,Google Maps Api 2,我有下面的脚本来使用google maps API,我必须创建一个具有多个标记(指向某物的气球状图标)的地图,并且我需要每个标记指向地图的不同区域(即不同的坐标),我该怎么做? 注意:我没有必须放置标记的区域的纬度和经度,而是必须放置标记的区域的地址 下面给出了在谷歌地图上显示多个标记的代码,但它没有按预期工作 var map = null; var geocoder = null; function initializeNew() { var allAddress = documen

我有下面的脚本来使用google maps API,我必须创建一个具有多个标记(指向某物的气球状图标)的地图,并且我需要每个标记指向地图的不同区域(即不同的坐标),我该怎么做? 注意:我没有必须放置标记的区域的纬度和经度,而是必须放置标记的区域的地址

下面给出了在谷歌地图上显示多个标记的代码,但它没有按预期工作

var map = null;
var geocoder = null;

function initializeNew() {
    var allAddress = document.getElementById("HiddenField1").value;
    var testary = new Array();
    testary = allAddress.split("|");

       if (GBrowserIsCompatible()) {
       //calls map to appear inside <div> with id, "map_canvas"
       map = new GMap2(document.getElementById("map_canvas"));

       //adds zoom and arrow controls to map
       //map.addControl(new GSmallMapControl());

       var marker = null;
       var i = 0;
       for (i = 0; i < testary.length; i++) {

           address = testary[i];

           geocoder = new GClientGeocoder();


           //converts a street address into geocode for the api 
           geocoder.getLatLng(
          address,
          function(point) {
              if (!point) {
                  alert(address + " not found");
              } else {
                  map.setCenter(point, 13);
                  marker = new GMarker(point);
                  map.addOverlay(marker);

                  map.setMapType(G_HYBRID_MAP);

                  //adds your own marker title and description in html
                  marker.openInfoWindowHtml("<p class='para1bold' style=\"font-weight: bold;\">Address</p><p class='para1'>" + address + "</p>");
                  //Add click event on push pin to open info window on click of the icon
                  GEvent.addListener(marker, "click", function() {
                  marker.openInfoWindowHtml("<p class='para1bold' style=\"font-weight: bold;\">Address</p><p class='para1'>" + address + "</p>");
              });
                  //Provides map,satellite,hybrid and terrain views in the map along with zoom control
                  map.setUIToDefault();
              }
          }
    )
      }


  }  
}
var-map=null;
var-geocoder=null;
函数initializeNew(){
var allAddress=document.getElementById(“HiddenField1”).value;
var testary=新数组();
testary=allAddress.split(“|”);
if(GBrowserIsCompatible()){
//调用map以显示在id为“map\u canvas”的内部
map=newgmap2(document.getElementById(“map_canvas”);
//向地图添加缩放和箭头控件
//addControl(新的gsmallmappcontrol());
var-marker=null;
var i=0;
对于(i=0;iAddress

“+Address+”

”; //在图钉上添加点击事件,点击图标打开信息窗口 addListener(标记“单击”,函数(){ marker.openInfoWindowHtml(“

Address

“+Address+”

”; }); //在地图中提供地图、卫星、混合和地形视图以及缩放控制 map.setUIToDefault(); } } ) } } }

我已将一组项目的地址存储在一个数组中,并循环以在地图中显示标记。这仅显示阵列中最后一个地址的一个标记。请更正此代码或提供新代码,通过提供地址在Google地图中显示多个标记。

尝试以下操作:将
var
放在标记前面

else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);

              map.setMapType(G_HYBRID_MAP);

              //adds your own marker title and description in html
              marker.openInfoWindowHtml("<p class='para1bold' style=\"font-weight: bold;\">Address</p><p class='para1'>" + address + "</p>");
              //Add click event on push pin to open info window on click of the icon
              GEvent.addListener(marker, "click", function() {
              marker.openInfoWindowHtml("<p class='para1bold' style=\"font-weight: bold;\">Address</p><p class='para1'>" + address + "</p>");
          });
else{
地图设定中心(点13);
var标记=新的GMarker(点);
添加覆盖图(标记);
setMapType(G_HYBRID_map);
//在html中添加您自己的标记标题和说明
marker.openInfoWindowHtml(“

Address

“+Address+”

”; //在图钉上添加点击事件,点击图标打开信息窗口 addListener(标记“单击”,函数(){ marker.openInfoWindowHtml(“

Address

“+Address+”

”; });
更新

var geocoder = new GClientGeocoder();

var addresses = ["new york","chicago"];
var curIndex = 0;

function showAddress() {
  var _cur = addresses[curIndex];
  geocoder.getLatLng(
    _cur,
    function(point) {
      if (!point) {
        alert(_cur + " not found");
      } else {
        console.log(_cur+":"+point);
      }
      //do next after done
      curIndex++;
      if(curIndex<addresses.length)
        showAddress();
    }
  );
}

showAddress();
</script>
var geocoder=new GClientGeocoder();
var地址=[“纽约”、“芝加哥”];
var-curIndex=0;
函数showAddress(){
var_cur=地址[curIndex];
geocoder.getLatLng(
_cur,
功能(点){
如果(!点){
警报(_cur+“未找到”);
}否则{
console.log(_cur+“:“+点);
}
//做完后做下一步
curIndex++;

如果(curIndex我遇到了完全相同的问题。看看我使用的代码。具体的位是,标记需要是一个数组,当你打开信息窗口时,内容需要存储在标记数组中。我还建议你使用JSON,它更容易解析,而不是用“|”分隔。)您是否尝试打印地理编码的结果?所有不同的lat&lng?当我打印geocoder.getLatLng方法的else部分中的地址变量(数组中的项)时,它会显示数组中的最后一项(最后一个地址)。我认为它在谷歌地图的同一位置显示了多个标记!!任何人都可以指导我更正代码!可能您提供给谷歌地理编码网站服务的地址太相似,这可能导致相同的lat-long结果。您是否尝试打印地理编码的结果?所有不同的lat&lng?所有纬度和长度数组中地址的大小被正确打印…我认为在创建标记时存在一些问题!当我在geocoder.getLatLng方法的else部分打印地址变量(数组中的项)时,它会显示数组中的最后一项(最后一个地址)。我认为它在谷歌地图的同一位置显示了多个标记!!任何人都可以指导我更正代码!因为geocoder.getLatLng是请求/响应函数,类似于xmlHttprequest。您需要等待请求完成后再发送另一个。我将更新我的答案。希望有帮助