0

質問があります。以下のこのスクリプトで値を取得する速度を向上させるにはどうすればよいですか?私のスクリプトは170個のマーカーを設定し、後でマップが変更されたとき(アイドルイベント)にマップ境界のlngとlatの値を取得し、この値をhiddenfieldに送信します。10-20-30マーカーの場合、この値は非常に速く表示されますが、+ 100マーカーの場合、この関数は非常に遅く、マップが変更されたときにすべての値を表示するのに5〜6秒かかります。私はマーカーを使用していますクラスタラーですが、速度に影響はありません。これを改善する方法は?ご挨拶!

                (..) // 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();
                });

「背後」のコード:

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

1 に答える 1

0

ページにマーカーを静的に読み込んでいるように見えます。AJAX手法を使用して(非同期に)マーカーをロードすると、ページのロードが速くなります。

MikeWilliamsのv2チュートリアルのAJAX哲学のページを参照してください。

于 2012-07-09T02:17:26.620 に答える