Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 获取反向地理代码的返回值_Javascript_Google Maps - Fatal编程技术网

Javascript 获取反向地理代码的返回值

Javascript 获取反向地理代码的返回值,javascript,google-maps,Javascript,Google Maps,我正在迭代excel中的纬度和经度列表。这很好,当我在循环中调用它时,我想让codeLatLng函数返回街道地址 注释后的代码就是我在codeLatLng()中尝试执行的代码。我知道我每秒只能给谷歌打10个电话,我该如何设置我的循环来做到这一点 谢谢 function codeLatLng(input) { var latlngStr = input.split(",", 2); var lat = parseFloat(latln

我正在迭代excel中的纬度和经度列表。这很好,当我在循环中调用它时,我想让codeLatLng函数返回街道地址

注释后的代码就是我在codeLatLng()中尝试执行的代码。我知道我每秒只能给谷歌打10个电话,我该如何设置我的循环来做到这一点

谢谢

        function codeLatLng(input) {
            var latlngStr = input.split(",", 2);
            var lat = parseFloat(latlngStr[0]);
            var lng = parseFloat(latlngStr[1]);
            var latlng = new google.maps.LatLng(lat, lng);
            geocoder.geocode({
                'latLng' : latlng
            }, function(results, status) {
                document.getElementById("test").innerHTML = results[0].formatted_address + "<br />";
                //return results[0].formatted_address;
            });
        }

        function initialize() {
            geocoder = new google.maps.Geocoder();              
        }   

        function showmethemoney(){  
            var lat, lng, latlng, loc;
            var Excel = new ActiveXObject("Excel.Application"); 
            Excel.Visible = false;
            Excel.Workbooks.Open($("#file").val()); 
            Excel.Active
            //Excel.ActiveSheet.UsedRange.Rows.Count
            $("#test").append("<b> " + Excel.ActiveSheet.UsedRange.Rows.Count + " rows in file</b><br/>");
            //10 for testing purposes. I will be going through the entire document
            for (var i=1; i <= 10; i++) {                   
                lat = Excel.ActiveSheet.Cells(i,17).Value;
                lng = Excel.ActiveSheet.Cells(i,18).Value;
                latlng = lat + "," + lng;
                //loc = codeLatLng(latlng);         
                $("#test").append(i + ") " + latlng + " " + loc + "<br/>");                                     
            };  
            Excel.Quit();
        }
function codeLatLng(输入){
var latlngStr=input.split(“,”,2);
var lat=parseFloat(latlngStr[0]);
var lng=parseFloat(latlngStr[1]);
var latlng=新的google.maps.latlng(lat,lng);
地理编码({
“latLng”:latLng
},功能(结果、状态){
document.getElementById(“test”).innerHTML=results[0]。格式化的_地址+“
”; //返回结果[0]。格式化的\u地址; }); } 函数初始化(){ geocoder=新的google.maps.geocoder(); } 函数showmethemoney(){ var lat、lng、latlng、loc; var Excel=新的ActiveXObject(“Excel.Application”); Excel.Visible=false; Excel.Workbooks.Open($(“#文件”).val(); Excel.Active //Excel.ActiveSheet.UsedRange.Rows.Count $(“#测试”).append(“+Excel.ActiveSheet.UsedRange.Rows.Count+”文件中的行
); //10用于测试目的。我将浏览整个文档
对于(var i=1;i您需要提供回调方法。您提供的方法将使用两个参数调用:

  • 对象数组
  • A
在回调中,您可以根据需要处理从地理编码器返回的数据

参见地理编码器文档


更详细地说,geocode方法将对google服务进行ajax调用。这是异步的。在调用geocode方法时,您的其余函数将继续执行。服务响应后,将调用回调,结果和状态将在参数中传递。如果您想存储结果,可以simp只需将其添加到任何可供您在外部使用的容器中。

提供对codeLatLng的回调,成功后将调用该回调。修改代码。
在代码中添加了循环,我使用setTimeout循环10个项目

  function codeLatLng(input, i, cb) {
                var latlngStr = input.split(",", 2);
                var lat = parseFloat(latlngStr[0]);
                var lng = parseFloat(latlngStr[1]);
                var latlng = new google.maps.LatLng(lat, lng);
                geocoder.geocode({
                    'latLng' : latlng
                }, function(results, status) {
                    document.getElementById("test").innerHTML = results[0].formatted_address + "<br />";
                   cb( results[0].formatted_address, i, input);
                });
            }
    function showmethemoney(){  
 //your code 
           var i = 1;
           function repeat10(i, max){
                for ( ; i <= max; i++) {                   
                     lat = Excel.ActiveSheet.Cells(i,17).Value;
                    lng = Excel.ActiveSheet.Cells(i,18).Value;
                     latlng = lat + "," + lng;
                    codeLatLng(latlng, i, function (loc, i, latlng ){
                          $("#test").append(i + ") " + latlng + " " + loc + "<br/>");   
                     });         

               } 
             setTimeout(function(){
                  if(i >= maxexcelsize){ return };
                   repeat10(i, i+10);
              }, 100);
            } 
            repeat10(i, i+10);
            Excel.Quit();
        }
功能代码(输入、i、cb){
var latlngStr=input.split(“,”,2);
var lat=parseFloat(latlngStr[0]);
var lng=parseFloat(latlngStr[1]);
var latlng=新的google.maps.latlng(lat,lng);
地理编码({
“latLng”:latLng
},功能(结果、状态){
document.getElementById(“test”).innerHTML=results[0]。格式化的_地址+“
”; cb(结果[0]。格式化的_地址,i,输入); }); } 函数showmethemoney(){ //你的代码 var i=1; 功能重复10(i,最大值){ 对于(;i=maxexcelsize){return}; 重复10次(i,i+10); }, 100); } 重复10次(i,i+10); Excel.Quit(); }
能否提供一个小的代码示例?我从理论上理解你说的话,但我对js还是个新手,我正在努力理解回调。