2012-10-24 2 views
2

고정 된 실제 반경의 마커가 미터로 표시된지도를 만들려고합니다. CIRCLE 기호 스타일을 사용하고 있지만 확대/축소 수준에 관계없이 화면 크기가 동일하므로 크기 옵션을 사용하여 원의 크기를 변경하려고 시도하는 것이 적절하지 않습니다. 내가 줌을 변경하면 동일한 수의 픽셀을 묵고, 크기를 변경하지 않습니다고정 실제 (안 화면) 반경과 마커 클러스터러스가있는 마커

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

하지만 마커의 크기 :

그래서, 예를 들어, 나는 특정 지점과 사용에서 500m 반경의 원을 할 수 있습니다 확대/축소 수준에 상관없이

google.maps.Circle을 google.maps.Marker의 대안으로 사용해 보았습니다. Circle에 반지름 옵션이 있지만 그 크기 조정 측면에서 정상적으로 작동하지만 MarkerClusterer를 사용하여 그룹화 할 수는 없습니다. 동시에 많은 양의 화면이 화면에 나타나면 이는 또 다른 요구 사항입니다.

그래서 클러스터 마커 그룹과 고정 크기 마커를 함께 작동 시키려면 어떻게해야합니까?

+0

아마도 MarkerClusterer를 Circles 클러스터로 변경 하시겠습니까? – geocodezip

답변

1

@geocodezip의 제안 덕분에 MarkerClusterer의 소스 코드를 살펴보고 몇 가지 조작으로 동그라미로 작업 할 수있었습니다.) (

  • 이 getCenter()
  • 변경 MarkerClusterer.prototype.pushMarkerTo_로하는 getPosition()의 모든 항목을 변경 : 경우 다른 사람이 비슷한을 할 필요가 여기에 내가 markercluster.js에 대한 변경 사항입니다 다음과 :

    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를 사용하여 작동합니다.