2012-10-03 3 views
4

안녕하세요, 내 첫 번째 게시물입니다 ..markerclusterer limits

프랑스에서 야영장 목록을 만들려고 노력하는 Google지도를 가지고 놀았습니다.

데이터의 XML 파일을 읽어야합니다. 지도를로드하고 결과를 클러스터링하면 모두 작동합니다. 매우 느립니다.

Q1 당신도 클러스터 러를 사용하여 렌더링 할 수있는 마커의 수에 제한이 있습니까 (순간> 7000 개 레코드가)

Q2 내가 지금까지 가지고있는 코드 분명히 문제가 있나요 :

<!DOCTYPE html> 
<html> 
<head> 
    <title>Read XML in Microsoft Browsers</title> 
     <script src="http://maps.google.com/maps/api/js?sensor=false&language=en&region=GB" type="text/javascript"></script> 
     <script src="scripts/markerclusterer.js" type="text/javascript"></script> 
     <link rel="stylesheet" type="text/css" href="stylesheets/style_1024.css" /> 
    <script type="text/javascript"> 
     var xmlDoc; 
     function loadxml() { 
      xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
      xmlDoc.async = false; 
      xmlDoc.onreadystatechange = readXML; 
      xmlDoc.load("xml_files/France_all.xml"); 
     } 

     function readXML() { 
      if (xmlDoc.readyState == 4) { 
       //alert("Loaded"); 
       //set up map 
       var map = new google.maps.Map(document.getElementById('map'), { 
        zoom: 10, 
        center: new google.maps.LatLng(0, 0), 
        mapTypeControl: true, 
        mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU }, 
        navigationControl: true, 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
       }); 

       var bounds = new google.maps.LatLngBounds(); 
       var infowindow = new google.maps.InfoWindow({ maxWidth: 100 }); 
       var marker, i 

       var markers = []; 
       var html = []; 

       var x = (xmlDoc.getElementsByTagName("placemark").length); 
       //for (i = 0; i < x; i++) { 
       for (i = 0; i < x; i++) { 
        //document.write(xmlDoc.documentElement.childNodes[1].firstChild.tagName) + '<br>'; 
        desc = xmlDoc.getElementsByTagName("description")[i].text; 
        lat = parseFloat((xmlDoc.getElementsByTagName("latitude")[i].text)); 
        lon = parseFloat((xmlDoc.getElementsByTagName("longitude")[i].text)); 
        myicon = (xmlDoc.getElementsByTagName("icon")[i].text); 
        //create new point 
        var point = new google.maps.LatLng(lat, lon); 

        //create new marker 
        marker = new google.maps.Marker({ 
         position: point, 
         panControl: false, 
         map: map, 
         icon: myicon 
        }); 

        //increae map bounds 
        bounds.extend(point); 
        //fit to bounds 
        map.fitBounds(bounds); 

        //add reference to arrays 
        markers.push(marker); 
        html.push(desc); 

        //add listener 
        google.maps.event.addListener(marker, 'click', (function (marker, i) { 
         return function() { 
          infowindow.setContent(html[i]); 
          infowindow.open(map, marker); 
         } 
        })(marker, i)); 

        //alert(i + " " + desc +" added!"); 
       }; 
       //var mc = new MarkerClusterer(map); 
       var mcOptions = {gridSize: 50, maxZoom: 15 }; 
       var mc = new MarkerClusterer(map, markers, mcOptions); 
      } 

     } 
    </script> 


</head> 

<body onload="loadxml()"> 

<div style="height:100%; width:100%"> 
    <div id="map" style="float:left; width:50%; height:100%"> 
     <!--filled via script--> 
    </div> 
    <div style="float:left; width:50%; height:100%"> 
     <h4>Select Region</h4> 
     <select> 
     <option value="Alsace" onclick="loadxml()">Alsace</option> 
     </select> 
    </div> 
</div> 

</body> 
</html> 
+0

이 문제를 해결할 수 있었습니까? – user427969

답변

0

article이 도움이 될 수 있습니다. 타일 ​​기반 솔루션 (FusionTables, KmlLayer 또는 서버 기반 맞춤형지도)은 클러스터링을 사용하더라도 기본 Google Maps API v3 객체보다 빠르게 렌더링됩니다. xml 파일의 전송 및 처리 시간이 표시 될 수 있습니다.