Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得更多+;10/11标记的LatLng值_Javascript_Google Api - Fatal编程技术网

Javascript 如何获得更多+;10/11标记的LatLng值

Javascript 如何获得更多+;10/11标记的LatLng值,javascript,google-api,Javascript,Google Api,我有一个带有本地化的数组(“街道、城市、邮政编码、省、国家”)。 我想要一个字符串,其中包含每个本地化的所有Lat和Lng值,如下所示(“Lat.value | Lng.value#lat2.value | lng2.value..”等)。我使用这个谷歌API地理编码器。但地理编码器有一个恼人的限制,一次只能定位10~11次。如何获得100个本地化的约100 lat和lng值?我尝试了sleep()函数,但不起作用。这是我在js中的函数 function slee

我有一个带有本地化的数组(“街道、城市、邮政编码、省、国家”)。 我想要一个字符串,其中包含每个本地化的所有Lat和Lng值,如下所示(“Lat.value | Lng.value#lat2.value | lng2.value..”等)。我使用这个谷歌API地理编码器。但地理编码器有一个恼人的限制,一次只能定位10~11次。如何获得100个本地化的约100 lat和lng值?我尝试了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
然后

点击我!
错误是:

未定义下一步


有什么问题吗?

请尝试以下方法,而不是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

//...............
//...............

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

“sleep()”函数是危害人类罪。之前我使用了setTimeout函数,我尝试了所有方法,但是。。好吧,好吧,我的错:汉克斯,这工作做得很好!但还有另一个问题——请在第一篇文章“编辑”之后查看。你好@您可以通过更改
setTimeout
方法的延迟来配置请求速度。为了加速,设置延迟,例如,设置为
100
,等等……是的,我知道。但例如-这100个标记在地图上,但我必须等待几分钟,直到Mystring显示值。@whoah如果您的
latlng
数组始终具有相同的值,即它是静态的,那么您可以执行100-150个请求,并将响应的数据存储在服务器的某个位置(在数据库、文件等中)。然后,只需一个请求,就可以从您的存储中检索所有数据(数据库、某些文件等)。好的,这就行了!但还有最后一个问题-如何仅在单击按钮时运行函数nextStep?不是在重新加载页面?
                    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>
//...............
//...............

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

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