2011-12-30 38 views
1

我使用谷歌地图API V3与js和我试图打开infowndow在地图上,但通过我的代码是不是在这里打开每个标记是我的代码示例请核对告诉我哪里是错误信息窗口上的谷歌地图不工作

<script type="text/javascript"> 
var map; 

var markers = new Array(); 

function initialize() { 
    var map_center = new google.maps.LatLng(31.2330555556,72.3330555556); 


var GPS = <%=GPS %> 
    var myOptions = { 
     zoom: 8, 
     scaleControl:true, 
     pancontrol: true, 
     streetViewControl: true, 
     center: map_center, 
     mapTypeControl: true, 
     mapTypeControlOptions: { 
     style: google.maps.MapTypeControlStyle.DROPDOWN_MENU 
    }, 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }  
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    var infowindow = new google.maps.InfoWindow(); 


    for(i=0; i<GPS.length; i++) 
    { 

      var image = 'ico/no.png'; 

      var ContentString = GPS[i].TITLE; 
      markers[i] = new google.maps.Marker(
      { 
      position: GPS[i].GPS, 
      map: map, 
      draggable:true, 
      icon:image, 
      title:GPS[i].TITLE 
      });      

      google.maps.event.addListener(markers[i], 'click', function() { 
      infowindow.setContent(ContentString); 
      infowindow.open(map,markers[i]); 
      });    
     }  
     } 
</script> 
+0

任何人都请回复我的问题 – 2011-12-30 05:56:42

回答

0

试试下面的代码:

google.maps.event.addListener(markers[i], 'click', function() { 
      infowindow.setContent(ContentString); 
      infowindow.open(map,this); 
      }); 
+0

感谢我回答 – 2011-12-30 07:41:14

0

我已经完成一个程序使用最近相同的API为你的。面对同样的问题,我发现关键因素是环ended.It据说变量“我”已经达到了最大化价值时的addListener的功能后工作的addListener 功能会工作。所以我加入了几步来处理这个问题。你可以看看我的,我希望这是对你有帮助。

function ShowParkingPoints() { 

    var adNum=document.getElementById("tableOne").rows.length; 
    var i; 
    var j; 
    var l; 
    var ly; 
    for (i=1;i<adNum;i++) 
    { 
     for(j=1;j<5;j++) 
     { 
      var k=i-1; 

       addArray[k]+=document.getElementById("tableOne").rows[i].cells[j].innerHTML; 
     } 
    } 
    for (i=0;i<adNum-1;i++){ 
      var image = new sogou.maps.MarkerImage('images/flag.png', 
       new sogou.maps.Size(60, 60), 
       new sogou.maps.Point(0,0), 
       new sogou.maps.Point(0, 60)); 
      var shape = { 
       coord: [1, 1, 1, 20, 18, 20, 18 , 1], 
       type: 'poly' 
      }; 

      geocoder.geocode({ 'address': addArray[i]}, function(results, status) { 
       if (status == sogou.maps.GeocoderStatus.OK) { 
       var str=results[0].formatted_address; 
       //infowindow.setContent(str); 
       var marker1= new sogou.maps.Marker({ 
        map: map, 
       icon: image, 
        shape: shape, 
        draggable:true, 
        position: results[0].geometry.location 
       }); 
       i=i-1 
       markerArrayS[i]=marker1; 
       locationArray[i]=results[0].geometry.location; 
        sogou.maps.event.addListener(markerArrayS[i], 'click', function(event) { 
        makerClicked(event.latLng); 
      }); 
       } else { 
       alert("Geocode was not successful for the following reason: " + status); 
       } 
      }); 
    } 
    map.setCenter(mapCenter); 
      map.setZoom(13); 

} 
+0

是它为我感谢 – 2011-12-30 07:50:04

+0

u能告诉我一些想法,使标记的集群在我上面的代码中好点子 – 2011-12-30 07:53:25

0

我想你只需要使用'i = i-1'来替换'我',当你开始登录事件watcher.You可以试试看。在某种程度上,你需要的时候你要读出来注意到在阵列,你的顺序存储。