2009-05-11 14 views
1

Das ist seltsam. Ich verwende den Marker-Clusterer, um alle meine Marker zu bündeln, aber das erste Mal, wenn die Karte rendert und wenn ich versuche, sie zu ziehen oder zu schwenken - es hängt und Firefox sagt mir, dass das Skript es verlangsamt, also muss ich das Skript stoppen . Aber wenn ich es auszoomt - es zoomt normal und schwenkt es von da an keine Probleme - ich habe keine Ahnung, was hier schief geht. Hier ist mein Code bin ich etwas fehlt hier - etwas falsch mit meiner Initialisierung sein muss:Google Maps mit Marker CLusterer - Karte hängt !!! Warum!

var map = null; 

function initializeGMaps() { 



    if (GBrowserIsCompatible()) 
    { 
    map = new GMap2(document.getElementById("map_canvas")); 


    { 
     var side_bar_html = ""; 
     var gmarkers = []; 
     var htmls = []; 
     var i = 0; 
     iconBlue = new GIcon(); 
     // A function to create the marker and set up the event window 
     function createMarker(point,name,html) { 


     iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_yellow.png'; 
     iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'; 
     iconBlue.iconSize = new GSize(12, 20); 
     iconBlue.shadowSize = new GSize(22, 20); 
     iconBlue.iconAnchor = new GPoint(6, 20); 
     iconBlue.infoWindowAnchor = new GPoint(5, 1); 

     var marker = new GMarker(point,{ icon:iconBlue, }); 
     GEvent.addListener(marker, "click", function() { 
      marker.openInfoWindowHtml(html); 
     }); 
     gmarkers[i] = marker; 
     htmls[i] = html; 
     side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '<\/a><br>'; 
     i++; 
     return marker; 
     } 


     // This function picks up the click and opens the corresponding info window 
     function myclick(i) { 
     gmarkers[i].openInfoWindowHtml(htmls[i]); 
     } 


     // create the map 
     map = new GMap2(document.getElementById("map_canvas")); 
     map.setCenter(new GLatLng(43.907787, -50.359741), 5); 

     var customUI = map.getDefaultUI(); 
     customUI.controls.maptypecontrol = false; 
     customUI.controls.menumaptypecontrol = true;  
     map.setUI(customUI); 

     // A function to read the data 
     function readMap() { 
     var url='get-map-markers.php'; 
     var request = GXmlHttp.create(); 
     request.open("GET", url, true); 
     request.onreadystatechange = function() { 
      if (request.readyState == 4) { 
      var xmlDoc = request.responseXML; 
      // obtain the array of markers and loop through it 
      var markers = xmlDoc.documentElement.getElementsByTagName("marker"); 

      // hide the info window, otherwise it still stays open where the removed marker used to be 
      map.getInfoWindow().hide(); 

      map.clearOverlays(); 

      // empty the array 
      allmarkers = []; 
      //var clusterer = new Clusterer(map); 

      for (var i = 0; i < markers.length; i++) { 
       // obtain the attribues of each marker 
       var lat = parseFloat(markers[i].getAttribute("lat")); 
       var lng = parseFloat(markers[i].getAttribute("lng")); 
       var point = new GLatLng(lat,lng); 
       var html = markers[i].getAttribute("html"); 
       var label = markers[i].getAttribute("label"); 
       // create the marker 

       var marker = createMarker(point,label,html); 
       //map.addOverlay(marker); 
       allmarkers.push(marker); 
       //clusterer.AddMarker(marker, html); 
      } 
      var markerCluster = new MarkerClusterer(map, allmarkers); 
      // put the assembled side_bar_html contents into the side_bar div 


      } 
     } 
     request.send(null); 
     } 

     readMap(); 

    } 




    } 
} 

$(document).ready(function() { initializeGMaps(); }); 
$('body').unload(function() { GUnload(); }); 

UPDATE: Ich habe gerade bemerkt, dass das Skript bei google.com verursacht die Seite langsam sein: ? (wie das Problem beheben: Was habe ich in meinem Code getan, um dieses Verhalten zu bringen

+0

Wie viele Marker hast du? Friert der Browser beim Analysieren der XML-Datei oder danach? Und können Sie einen Link zu Ihrer Seite posten? –

+0

Wie gesagt, ich teste mit ein paar tausend Markern und es ist irgendwie langsam. Im Grunde braucht es eine Weile, um alle Markierungen, die ich bemerkt habe, zu laden - danach ist es glatt segelnd. Aber es ist die gleiche Anwendung im anderen Thread mit rund 120 000 Markern, also nehme ich Ihren Vorschlag für einen Server-basierten Clusterer. Außer ich kenne keine :( – Ali

+0

Ich weiß nicht, ob Sie es gesehen haben, aber ich fügte ein Update zu meiner Antwort dort mit einem Link zu einigen Server-Seite Clustering-Code, den Sie für Ihre Zwecke anpassen könnten. Überprüfen Sie es und versuche es. –

Antwort