点击ClusterMarker时,我需要打开infoWindow
而不是放大地图。
我正在使用Gmaps util库MarkerClusterer
来创建标记簇。我尝试在markerclusterer.js中更改以下行
ClusterMarker_.prototype = new GOverlay();
与
ClusterMarker_.prototype = new GMarker();
这样我就可以在群集标记中获得openInfoWindow()
函数,但这并没有成功。有一些错误。
如果可能,请建议解决方案,以便MarkerClusterer
完成此操作。或者任何其他能够执行此操作的库。
任何帮助将不胜感激。
答案 0 :(得分:6)
对于MarkerCluster v3,有一个名为“ clusterclick ”的自定义事件,它返回markerCluster对象,然后您可以获取其中心并将其分配给infoWindow,如下所示:
google.maps.event.addListener(mc, 'clusterclick', function (mCluster) {
//infowindow must be declared before in your code
infowindow.setContent("your info");
var myLatlng = new google.maps.LatLng(mCluster.getCenter().ya, mCluster.getCenter().za);
infowindow.setPosition(myLatlng);
infowindow.open(map);
});
此外,您必须在false:
上设置zoomOnClick选项var mcoptions = { zoomOnClick: false, showText: true, averageCenter: true}
var mc = new MarkerClusterer(map, markersArray, mcoptions);
答案 1 :(得分:1)
最好从第672行开始修改markerclusterer.js中标记的click事件。
目前:
GEvent.addDomListener(div, "click", function () {
var pos = map.fromLatLngToDivPixel(latlng);
var sw = new GPoint(pos.x - padding, pos.y + padding);
sw = map.fromDivPixelToLatLng(sw);
var ne = new GPoint(pos.x + padding, pos.y - padding);
ne = map.fromDivPixelToLatLng(ne);
var zoom = map.getBoundsZoomLevel(new GLatLngBounds(sw, ne), map.getSize());
map.setCenter(latlng, zoom);
});
更改为:
GEvent.addDomListener(div, "click", function () {
map.openInfoWindowHtml(latlng, "Put your infowindow content here");
});
显然,根据你想要抽象的东西,你可以做几件事: