2012-07-08 5 views
0

J'ai une question. Comment puis-je améliorer la vitesse d'obtention des valeurs dans ce script ci-dessous? Mon script définit 170 marqueurs, plus tard obtient les valeurs lng et lat des limites de la carte lorsque la carte est en changement (événement inactif) et envoie ces valeurs dans le champ masqué. Pour les marqueurs 10-20-30, ces valeurs s'affichent très rapidement, mais pour +100 marqueurs, cette fonction est très lente, et il faut 5-6 secondes pour afficher toutes les valeurs lorsque la carte change. J'utilise le marqueur clusterer, mais il n'y a pas d'effet sur la vitesse. Comment améliorer cela? salutations!Les valeurs de hiddenfield sont très lentes

   (..) // map options 
       var map = new google.maps.Map(document.getElementById("mapka"), mapOptions); 

       var markers = []; 

       var lngstring = <%=lngstring %> 
       var latstring = <%=latstring %> 
       //alert(latstring); 
       //alert(lngstring); 
       var arraylat = latstring.split("#"); 
       var arraylng = lngstring.split("#"); 

       for (var i = 0; i < arraylng.length-1; i++) { 
       var marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(arraylng[i], arraylat[i]) 
        }); 
       markers.push(marker); 
       } 
       var markerCluster = new MarkerClusterer(map, markers); 

       google.maps.event.addListener(map, 'idle', function() { 
       var bounds = map.getBounds(); 
       var nelat = bounds.getNorthEast().lat(); 
       var nelng = bounds.getNorthEast().lng(); 
       var swlat = bounds.getSouthWest().lat(); 
       var swlng = bounds.getSouthWest().lng(); 
       var c1 = map.getCenter().lat(); 
       var c2 = map.getCenter().lng(); 
       var zoom1 = map.getZoom(); 
       document.getElementById("<%=hfNelat.ClientID%>").value = nelat; 
       document.getElementById("<%=hfNelng.ClientID%>").value = nelng; 
       document.getElementById("<%=hfSwlat.ClientID%>").value = swlat; 
       document.getElementById("<%=hfSwlng.ClientID%>").value = swlng; 
       document.getElementById("<%=UpdateButton1.ClientID %>").click(); 
       }); 

Code "derrière":

protected void UpdateButton_Click(object sender, EventArgs e) 
    { 
     lNelat.Text = hfNelat.Value; 
     lNelng.Text = hfNelng.Value; 
     lSwlat.Text = hfSwlat.Value; 
     lSwlng.Text = hfSwlng.Value; 
    } 

Répondre

0

Il me semble que vous chargez les marqueurs statiquement dans la page. La page se chargerait plus rapidement si vous chargiez les marqueurs en utilisant les techniques AJAX (de manière asynchrone). Voir le The AJAX Philosophy page du tutoriel v2 de Mike Williams.

+0

Je dois charger une seule fois les marqueurs de la base de données, les dessiner tous sur la carte et c'est tout avec des marqueurs - autre travail avec des valeurs de limites, et j'ai besoin de ces valeurs aussi rapidement que possible (2-3 secondes d'attente est acceptable bien sûr). AJAX va améliorer ce temps d'attente? Honnêtement, je n'utilise jamais AJAX et je ne sais pas comment l'introduire sur mon script. Pourriez-vous nous en dire plus sur cette solution avec des marqueurs de chargement utilisant ajax? – whoah

+0

Avez-vous lu la page de Mike Williams? Si cela n'a pas aidé, essayez [ceci] (https://www.google.com/search?btnG=1&pws=0&q=AJAX+Asynchronous+Javascript+and+Xml), mais cela ne réduira pas le temps obtenir les résultats, juste le temps d'afficher la carte. Le problème est que mettre toutes les informations de marqueur de manière statique dans votre page augmente la taille de votre page et donc le temps qu'il faut pour rendre. – geocodezip

Questions connexes