2

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

因此,例如,我可能希望在特定点有一个 500m 半径的圆并使用:

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 将它们组合在一起它们同时出现在屏幕上,这是另一个要求。

那么如何使聚集标记组和固定大小标记一起工作呢?

4

1 回答 1

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。

于 2012-10-24T19:45:16.613 回答