固定Real(不在屏幕上)Radius和MarkerClusterer的标记

时间:2012-10-24 15:06:50

标签: google-maps google-maps-api-3

我正在尝试创建一个包含固定实际半径标记的地图(以米为单位)。我正在使用CIRCLE符号样式,但尝试使用缩放选项更改圆的大小似乎不太合适,因为无论缩放级别如何,它都在屏幕上保持相同的大小。

因此,例如,我可能想要在特定点使用500米半径的圆并使用:

var markerOptions = {
  icon: {
    path: google.maps.SymbolPath.CIRCLE,
    scale: 500
  },
  position: new google.maps.LatLng(0, 50)
};
marker = new google.maps.Marker(markerOptions);

但是当我更改缩放时,标记大小不会改变大小,无论缩放级别如何,都保持相同的像素数。

我尝试使用google.maps.Circle作为google.maps.Marker的替代品,虽然Circle有一个半径选项,并且在缩放方面工作正常但我无法使用MarkerClusterer将它们组合在一起它们同时在屏幕上有很多,这是另一个要求。

那么如何让聚类标记组和固定大小的标记一起工作呢?

1 个答案:

答案 0 :(得分:1)

感谢@geocodezip的建议,我看了一下MarkerClusterer的源代码,并设法让它与圈子一起进行一些调整。如果其他人需要做类似的事情,那么我对markercluster.js进行了更改:

  • 将所有出现的getPosition()更改为getCenter()
  • 将MarkerClusterer.prototype.pushMarkerTo_()更改为以下内容:

    MarkerClusterer.prototype.pushMarkerTo_ = function (marker) {
      // If the marker is draggable add a listener so we can update the clusters on the dragend:
      marker.isAdded = false;
      this.markers_.push(marker);
    };
    

现在一切都可以使用google.maps.Circle和MarkerClusterer。