如何从标记中获取更多 +10/11 LatLng 值



>我有一个带有本地化的数组("街道,城市,邮政编码,省,国家")。我想有一个字符串,其中包含每个本地化的所有 Lat 和 Lng 值,如下所示("#lat.value|lng.value#lat2.value|lng2.value.。"等)。我用于这个谷歌API地理编码器。但是地理编码器有一个烦人的限制 10~11 次本地化一次。如何获得大约 100 个纬度和液化天然气值以进行 100 次本地化?我尝试了 sleep() 功能,但这不起作用。这是我在 js 中的函数。

                function sleep(time){
                   time = time * 1000;
                   var start = (new Date()).getTime();
                   while(true){
                      alarm = (new Date()).getTime();
                      if(alarm - start > time){ break; }
                   }
                }
(..)
                var mystring = "";
                var address = <%=testing %>
                var arrayaddress = address.split("%");
                for (var i = 0; i < arrayaddress.length-1; i++) {
                    sleep(0);
                    geocoder = new google.maps.Geocoder(); 
                    geocoder.geocode( { 'address': arrayaddress[i]}, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        map.setCenter(results[0].geometry.location);
                        var marker = new google.maps.Marker({
                        map: map,
                        position: results[0].geometry.location
                        });
                        var zmiennalat = marker.getPosition().lat();
                        var zmiennalng = marker.getPosition().lng();
                        mystring = mystring + "#" + zmiennalat + "|" + zmiennalng;
                    } 
                    else 
                    {
                        mystring = mystring + "#" + "er" + "|" + "er";
                        //alert("Geocode was not successful for the following reason: " + status);
                    }
                    if (i == arrayaddress.length-1) {
                       var dsa = mystring;
                       document.getElementById("<%=hfWysokosc.ClientID%>").value = mystring;
                       document.getElementById("<%=hfSzerokosc.ClientID%>").value = dsa;
                       document.getElementById("<%=UpdateButton1.ClientID %>").click();
                    }
                    }); 
                 } // for

然后,结果是例如:

er|er#34.42342|16.4323#23.32131|43.54545#等。

起初,本地化总是解码错误(如果数组中超过 10 位)。为什么?为什么最后不本地化?

恢复:如何通过此循环在此搅拌中获得超过 10 个纬度值?

谢谢!

编辑

谢谢,这很好!

但还有另一个问题。 字符串Mystring显示非常缓慢..如何修复它? 当标记设置在地图上时,它会令人耳目一新 - 也许这不是问题,但对于 100-150 个标记,我必须等待几分钟才能获得 Mystring 值。是否有可能显示更快的Mystring值?

                        var mystring = "";
                    var address = <%=testing %>
                    alert(address);
                    var arrayaddress = address.split("%");
                    (function nextStep(i){
                    if( i >= arrayaddress.length-1 ){
                        return;
                    }
                    geocoder = new google.maps.Geocoder(); 
                    geocoder.geocode( { 'address': arrayaddress[i]}, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        map.setCenter(results[0].geometry.location);
                        var marker = new google.maps.Marker({
                        map: map,
                        position: results[0].geometry.location
                        });
                        var zmiennalat = marker.getPosition().lat();
                        var zmiennalng = marker.getPosition().lng();
                        mystring = mystring + zmiennalat + "|" + zmiennalng + "#";
                    } 
                    else 
                    {
                        mystring = mystring + "er" + "|" + "er" + "#";
                        //alert("Geocode was not successful for the following reason: " + status);
                    }
                    }); 
                    setTimeout(function(){   nextStep(i+1);   }, 800); 
                       var dsa = mystring;
                       document.getElementById("<%=hfSzerokosc.ClientID%>").value = dsa;
                       document.getElementById("<%=UpdateButton1.ClientID %>").click();    
                })(0);

更新

                    function nextStep(i){
                    if( i >= arrayaddress.length-1 ){
                        return;
                    }
                    
                    // code
                    
                    }); 
                    setTimeout(function(){   nextStep(i+1);   }, 1000);     
                };

然后

<button type="button" onclick="nextStep(0)">Click Me!</button>

错误是:

未定义下一步

怎么了?

不要尝试 for 循环,请尝试以下操作:

//...............
//...............
var mystring = "";
var address = <%=testing %>
var arrayaddress = address.split("%");
//Modification-----BEGIN
(function nextStep(i){
    if( i >= arrayaddress.length-1 ){
        return;
    }
    //-----------------
    //for-loop body here
    //------------------
    //
    setTimeout(function(){   nextStep(i+1);   }, 500);       
})(0);
//Modification-----END
//...............
//...............

更新:如果要运行nextStep函数,只有在单击按钮时,才能像这样修改上面的代码:

function nextStep(i){
    /////   
};

然后,当触发onclick时,只需调用nextStep(0)即可。

相关内容

  • 没有找到相关文章

最新更新