嘿我正在使用流行的markerclusterer插件,可以在http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js找到谷歌地图
我想知道我可以使用什么功能手动添加群集标记,因为我希望,当我缩小很多时,在通过网络发送大量json之前将标记服务器群集。
调用什么函数来添加群集标记?
非常感谢任何帮助
答案 0 :(得分:2)
由于缺少任何其他答案,我自己对MarkerClusterer进行了扩展,我确信它可以重写为更好的标准,但这是我能想到的:
MarkerClusterer.prototype.AddCluster = function(clat, clng, csize)
{
var clusterlocation = new google.maps.LatLng(clat, clng)
var CI = new ClusterIcon(new Cluster(this), this.getStyles, this.getGridSize());
var index = 0;
var dv = csize;
while (dv !== 0) {
dv = parseInt(dv / 10, 10);
index++;
}
var style = this.styles_[index-1];
CI.setCenter(clusterlocation);
$.extend(CI, {sums_ : {text : csize, index: index}, url_ : style['url'], width_ : style['width'], height_ : style['height']});
CI.setMap(this.map_);
CI.show();
CI.triggerClusterClick = function()
{this.map_.setCenter(clusterlocation);
this.map_.setZoom(this.map_.getZoom()+1); }
}
答案 1 :(得分:1)
我改编了@ Jakob的Google Maps API V3代码。 希望能帮到别人。
MarkerClusterer.prototype.A ddCluster = function(clat, clng, csize) { this.setZoomOnClick(false); if (typeof this.aAddClusterIcons == "undefined"){ this.aAddClusterIcons = []; } this.activeMap_ = this.getMap(); var clusterlocation = new google.maps.LatLng(clat, clng) var CI = new ClusterIcon(new Cluster(this), this.getStyles, this.getGridSize()); var index = 0; var dv = csize; while (dv !== 0) { dv = parseInt(dv / 10, 10); index++; } var style = this.styles_[index-1]; $.extend(CI, {sums_ : {text : csize, index: index}, url_ : style['url'], width_ : style['width'], height_ : style['height'], anchorIcon_: [clat, clng]}); CI.setCenter(clusterlocation); CI.setMap(this.activeMap_); CI.show(); this.aAddClusterIcons.push(CI); } MarkerClusterer.prototype.RemoveClusters = function(clat, clng, csize) { if (typeof this.aAddClusterIcons == "undefined"){ this.aAddClusterIcons = []; } $.each(this.aAddClusterIcons, function(iIndex, oObj){ oObj.onRemove(); }); this.aAddClusterIcons = []; }
答案 2 :(得分:0)
如果我说得对,你可以使用zoom_changed() event of google map object,即当map.getZoom()==16
使用 maxNumberOfFetchedPlaces 参数发送你的json请求时,你的服务器可以返回有限数量的结果。由于markerClusterer初始化就像是
var markerClusterer = new MarkerClusterer(map, fetchedPlacesArray);
你没有问题。
干杯