2017-07-28 73 views
-1

我正在使用Google API的示例代码来进行距离矩阵服务。我想抓住ZERO_RESULTS返回,但如果我试图检查response.rows [i] .elements.status,但是console.log()表示它是未定义的。Google distancematrixservice response.rows [i] .elements.status is zero_results but variable undefined

如果我转储response.rows [i] .elements控制台,我看到值设置为“ZERO_RESULTS”。

function calcDistance() { 
    var finalDistance = ""; 
    var service = new google.maps.DistanceMatrixService(); 
    service.getDistanceMatrix(
    { 
     origins: [autocomplete.getPlace().geometry.location], 
     destinations: [autocomplete2.getPlace().geometry.location], 
     travelMode: 'DRIVING' 
     }, callback); 

    function callback(response, status) { 

     if (status == 'OK') { 
      var origins = response.originAddresses; 
      var destinations = response.destinationAddresses;  

      for (var i = 0; i < origins.length; i++) { 
      var results = response.rows[i].elements; 

      console.log(response.rows[i].elements); 
      console.log(response.rows[i].elements.status); 

      for (var j = 0; j < results.length; j++) { 
       var element = results[j]; 
       //alert('status' + results.status); 
       var duration = element.duration.text; 
       var from = origins[i]; 
       var to = destinations[j]; 
      } 
      } 
     } 
     } 
    } 

Console Log

回答

0

你在你的代码中的错字。 elements是一个数组。 response.rows[i].elements.status未定义,response.rows[i].elements[0].status有效。

代码片断:

function calcDistance() { 
 
    var finalDistance = ""; 
 
    var service = new google.maps.DistanceMatrixService(); 
 
    service.getDistanceMatrix({ 
 
    origins: ["New York, NY"], 
 
    destinations: ["Newark, NJ"], 
 
    travelMode: 'DRIVING' 
 
    }, callback); 
 

 
    function callback(response, status) { 
 

 
    if (status == 'OK') { 
 
     var origins = response.originAddresses; 
 
     var destinations = response.destinationAddresses; 
 

 
     for (var i = 0; i < origins.length; i++) { 
 
     var results = response.rows[i].elements; 
 

 
     console.log(response.rows[i].elements); 
 
     console.log(response.rows[i].elements[0].status); 
 

 
     for (var j = 0; j < results.length; j++) { 
 
      var element = results[j]; 
 
      var duration = element.duration.text; 
 
      var from = origins[i]; 
 
      var to = destinations[j]; 
 
     } 
 
     } 
 
    } 
 
    } 
 
} 
 

 
function initialize() { 
 
    calcDistance(); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
<script src="https://maps.googleapis.com/maps/api/js"></script>