2013-12-10 20 views
11

MarkerClustererを使用しています。まったく同じ場所に2つ以上のマーカーがある場合、APIは1つのマーカーのみを表示します。しかし、どういうわけか、私はそれぞれが別個のポップアップを開くので、すべてのマーカーを表示したい。 検索されたいくつかのソリューションを検索しましたが、何も動作していないようです。 誰もが同様の問題を抱えていて、解決策を共有しますか?同じ場所に複数のマーカーがあります - MarkerClusterer

+2

[ロング/ LATまったく同じでマルチマーカーを爆発するmarkerClusterer V3にSpiderfier JSの統合]の可能な重複(http://stackoverflow.com/questions/9726920/integrating-spiderfier-js-into-markerclusterer -v3-to-explode-multi-marker-with) – geocodezip

+1

@geocodezipは、必要を満たさないため、OverlappingMarkerSpiderfierを使用せずに動作させる方法です。 2つ以上のマーカーがあることを知るために、両方のマーカーをわずかなスペースで表示します。ありがとう。 – Grish

+0

もちろんあります。それをコードするだけです。または、重複がないように入力データを変更します。 – geocodezip

答えて

23

最終的には動作しました。これは解決策をまだ見つけていないすべての人のためのものです。コードの下には同じ場所上のマーカーにオフセットを追加します。

あなたcreateMarker機能では、このコードを追加します

//get array of markers currently in cluster 
var allMarkers = namespace.mapParams.mapMarkersArray; 

//final position for marker, could be updated if another marker already exists in same position 
var finalLatLng = latlng; 

//check to see if any of the existing markers match the latlng of the new marker 
if (allMarkers.length != 0) { 
    for (i=0; i < allMarkers.length; i++) { 
     var existingMarker = allMarkers[i]; 
     var pos = existingMarker.getPosition(); 

     //if a marker already exists in the same position as this marker 
     if (latlng.equals(pos)) { 
      //update the position of the coincident marker by applying a small multipler to its coordinates 
      var newLat = latlng.lat() + (Math.random() -.5)/1500;// * (Math.random() * (max - min) + min); 
      var newLng = latlng.lng() + (Math.random() -.5)/1500;// * (Math.random() * (max - min) + min); 
      finalLatLng = new google.maps.LatLng(newLat,newLng); 
     } 
    } 
} 

Refer this

を今すぐ新しい位置値を持つ各マーカーのためのあなたのgoogle.maps.Markerオブジェクトを更新 - finalLatLng

var marker = new google.maps.Marker({ 
    map: msf_namespace.mapParams.resultmap, 
    position: finalLatLng, 
    title: name, 
    icon: markericon 
}); 

//add each generated marker to mapMarkersArray 
namespace.mapParams.mapMarkersArray.push(marker); 
+2

私は蜘蛛の罠よりもあなたの方法が好きですが、あなたが作業しているマーカはどれくらいで、プレースメントの速度低下に気づいたのでしょうか? – ow3n

+0

現在100前後です。パフォーマンスの問題は今までは – Grish

+0

です。 –

関連する問題