2012-04-20 50 views
0

我在我的谷歌地图上有几个标记。每个文本都应该以infowindow的形式单击时显示。所有这些代码如下。 Hwever,问题在于,当我点击地图上的任何标记时,它总是与地图放大的标记相同,并且同一个标记的infoWindow弹出。无论我在哪里点击它总是一样的。谷歌地图3:当任何标记点击相同infoWindow开放

想知道如果有什么明显的东西,我做错了。有人能给我一些建议吗?

function getlistings() 
    { 
    $.getJSON('list/listings.json', processlistings); 
    } 



function processlistings(data) 
{ 
    listings = data; 
    markersArray = []; 
    for(i = 0; i < listings.length; i++) 
    { 
     var listing = listings[i]; 
     var markerLatLng = new google.maps.LatLng(parseFloat(listing["latitude"]), parseFloat(listing["longitude"])); 
     marker = new google.maps.Marker({ 
      position : markerLatLng, 
      title: listing['name'], 
      map : map 
     }); 

    var infowindow = new google.maps.InfoWindow( 
     { 
      content: listing['name'], 
      position: markerLatLng 
     }); 

    google.maps.event.addListener(marker, 'click', function() 
    { 
     infowindow.open(map); 

    }); 

    markersArray.push(marker); 
} 

}

回答

2

,当你通过数据环路,你是在创造一个InfoWindow多次。在循环结束时,您有一个InfoWindowmarkerLatLng

当点击标记时,调用infowindow.open(),它使用markerLatLng的infowindow。

您需要使用的功能关闭,截至http://www.geocodezip.com/v3_MW_example_map1.html

//loop through markers, but create each with a helper function 
      var point = new google.maps.LatLng(43.82589,-79.10040); 
      var marker = createMarker(point,'Some stuff to display in the<br>Third Info Window') 

    function createMarker(latlng, html) { 
     var contentString = html; 
     var marker = new google.maps.Marker({ 
      position: latlng, 
      map: map, 
      zIndex: Math.round(latlng.lat()*-100000)<<5 
      }); 

     google.maps.event.addListener(marker, 'click', function() { 
      infowindow.setContent(contentString); 
      infowindow.open(map,marker); 
      }); 
    } 
证明
0

为您遍历清单,现在覆盖的信息窗口VAR内容。相反,你需要点击设置的内容更改为this.title

var infoWindow = new google.maps.InfoWindow({content: 'Loading...'});;  
function processlistings(data) 
    { 
     listings = data; 
     markersArray = []; 
     for(i = 0; i < listings.length; i++) 
     { 
      var listing = listings[i]; 
      var markerLatLng = new google.maps.LatLng(parseFloat(listing["latitude"]), parseFloat(listing["longitude"])); 
      marker = new google.maps.Marker({ 
       position : markerLatLng, 
       title: listing['name'], 
       map : map 
      }); 

     markersArray.push(marker); 
     } 
     for (var i = 0; i < markersArray.length; i++) { 
      var marker = markersArray[i]; 
      google.maps.event.addListener(marker, 'click', function() { 
      infoWindow.setContent(this.title); 
      infoWindow.open(map, this); 
      }); 
     } 
    } 
相关问题