【发布时间】:2016-04-27 13:36:06
【问题描述】:
我有一个谷歌地图,它下面有一个位置索引,所以用户可以点击一个位置名称,该位置的信息窗口就会在地图上弹出。
我也在使用 Marker Clusterer v3。此时单击索引中的项目会导致集群内项目的信息窗口弹出在地图的左上角。
如何让 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);
}
【问题讨论】:
-
你能做到
infoWindow.setPosition(marker.getPosition())或infoWindow.setPosition(gmarkers[index].getPosition()) -
@duncan -
infoWindow.setPosition(gmarkers[index].getPosition())完全按照我的意愿工作,谢谢。如果您将其添加为答案,我会将其标记为已接受。
标签: javascript google-maps google-maps-api-3 markerclusterer