2016-04-27 105 views
0

我有一個谷歌地圖使用有一個位置索引在它下面,因此用戶可以點擊一個位置名稱和該地點的信息窗口在地圖上彈出。谷歌地圖標記集羣 - 如何使用infoWindow與位置索引

我也使用Marker Clusterer v3。目前,點擊索引中的項目會導致集羣中項目的infoWindow在地圖左上角彈出。

如何讓infoWindow在正確的位置彈出?

這裏是我使用至今代碼:

var gmarkers = []; 
var map; 
var infoWindow; 

(function($) { 
    'use strict'; 

    $(function() { 
     initGmap(); 
     var openLink = $('.members-list span'); 
     $(openLink).click(function() { 
      var index = $(this).data('markerIndex'); 
      infoWindow.setContent(gmarkers[index].infWinCont); 
      infoWindow.open(map, gmarkers[index]); 
     }); 
    }); 

})(jQuery); 

function initGmap() 
{ 
    var mapCanvas = document.getElementById('map'); 
    var mapLatlng = new google.maps.LatLng(50.5692828655824, 10.01953125); 
    var mapOptions = { 
     center: mapLatlng, 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(mapCanvas, mapOptions); 
    map.minZoom = 3; 
    infoWindow = new google.maps.InfoWindow(); 
    // mapData and mapDataCount are loaded from a separate file 
    for (var i = 0; i < mapDataCount; i++) { 
     var latLng = new google.maps.LatLng(mapData[i].lat, mapData[i].lon); 
     var marker = new google.maps.Marker({ 
      position: latLng, 
      map: map, 
      infWinCont: mapData[i].infWin, 
     }); 
     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       infoWindow.setContent(marker.infWinCont); 
       infoWindow.open(map, marker); 
      }; 
     })(marker, i)); 
     gmarkers.push(marker); 
    } 
    var markerCluster = new MarkerClusterer(map, gmarkers); 
} 
+0

你可以做'infoWindow.s我們可以使用'etPosition(marker.getPosition())'或'infoWindow.setPosition(gmarkers [index] .getPosition())' – duncan

+0

@duncan - 'infoWindow.setPosition(gmarkers [index] .getPosition()謝謝。如果您將其添加爲答案,我會將其標記爲已接受。 – EpF

回答

0

之前標記添加到地圖中你可以這樣做:

infoWindow.setPosition(gmarkers[index].getPosition()); 
0

一個選項是打開信息窗口

var index = $(this).data('markerIndex'); 
gmarkers[index].setMap(map); 
// center and zoom on the marker so it remains unclustered 
map.setCenter(gmarkers[index].getPosition()); 
map.setZoom(18); 
// programmatically "clicking" on the marker opens the infowindow. 
google.maps.event.trigger(gmarkers[index], 'click'); 

proof of concept fiddle