0

먼저 그룹화하지 내가 JSON // 일MarkerCluster 구글지도 내 마커

JSON 구조 스테이션의 위치를 ​​얻을 : 나는 MarkerCluster와 마커를 그룹화 할

[{"number":31705,"name":"31705 - CHAMPEAUX (BAGNOLET)","address":"RUE DES CHAMPEAUX (PRES DE LA GARE ROUTIERE) - 93170 BAGNOLET","position":{"lat":48.8645278209514,"lng":2.416170724425901},"banking":true,"bonus":true,"status":"OPEN","contrat _name":"Paris","bike_stands":50,"available_bike_stands":45,"available_bikes":5,"last_update":1416677110000}] 

둘째하지만 MarkerCluster이있는 모든 내 마커
그룹화하지 않는 이유는 무엇입니까?

function initialize() { 

    var mapOptions = { 
    center: new google.maps.LatLng(48.859875, 2.342253), 
    zoom: 13, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    disableDefaultUI: true 
    }; 

    var infoWindow = new google.maps.InfoWindow(); 
    var mcOptions = {gridSize: 50, maxZoom: 15, minimumClusterSize:10} 

    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
    $.getJSON("https://api.jcdecaux.com/vls/v1/stations?contract=Paris&apiKey=d98a9b59f1d1999cf1ab909051cc63bd46c66a46", function (data) { 
    $.each(data, function (key, data) { 

     var markers = []; 

     for (var i = 0, length = data.address.length; i < length; i++) { 
     var myLatlng = new google.maps.LatLng(data.position.lat, data.position.lng); 
     var marker = new google.maps.Marker({ 
      position: myLatlng 
     }); 

     markers.push(marker); 
     } 

     var markerCluster = new MarkerClusterer(map, markers, mcOptions); 

    }); 
    }); 
    google.maps.event.addDomListener(window, 'load', initialize); 
} 
+0

질문에 JSON 형식 샘플을 제공해주십시오. – geocodezip

+0

이제 더 잘 이해해야합니다. – Rotideporc

답변

1

각 마커에 대한 새로운 MarkerClusterer (당신은 당신의 코드를 들여 쓰기 경우는 쉽게 볼 수있다)

    가 $의 .each 밖으로 MarkerCluster의 생성을 이동
  • 을 만들 수 있습니다. 또한

:이 데이터에 의해 요구되지 않는

  • 이 (data.address.length에 내부 루프를 제거 초기화 기능의 아웃 google.maps.event.addDomListener(window,'load',initialize);이 전혀 보이지 않았다

    • 이동 데이터)
    function initialize() { 
    
        var mapOptions = { 
        center: new google.maps.LatLng(48.859875, 2.342253), 
        zoom: 13, 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        disableDefaultUI: true 
        }; 
    
        var infoWindow = new google.maps.InfoWindow(); 
        var mcOptions = { 
        gridSize: 50, 
        maxZoom: 15, 
        minimumClusterSize: 10 
        }; 
    
        map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
        $.getJSON("https://api.jcdecaux.com/vls/v1/stations?contract=Paris&apiKey=d98a9b59f1d1999cf1ab909051cc63bd46c66a46", function (data) { 
        $.each(data, function (key, data) { 
         var myLatlng = new google.maps.LatLng(data.position.lat, data.position.lng); 
         var marker = new google.maps.Marker({ 
         position: myLatlng 
         }); 
         markers.push(marker); 
        }); 
        var markerCluster = new MarkerClusterer(map, markers, mcOptions); 
        }); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
    

    working fiddle (귀하의 데이터의 수정 된 하위 집합)