2

メートル単位で固定された実際の半径のマーカーを含むマップを作成しようとしています。CIRCLE シンボル スタイルを使用していますが、スケール オプションを使用して円のサイズを変更しようとしても、ズーム レベルに関係なく画面上で同じサイズのままであるため、正しい方法ではないようです。

したがって、たとえば、特定のポイントで半径 500 m の円が必要な場合は、次のようにします。

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.Marker の代わりに google.maps.Circle を使用してみました。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 に答える