2011-07-25 19 views
7

Chức năng computeDistanceBetween() trong thư viện hình học bản đồ google sẽ không trả lại giá trị cho tôi. Sử dụng hàm alert nó nói khoảng cách là "[đối tượng, đối tượng]". Bất cứ ai có thể nhìn thấy nơi tôi đang đi sai? đây là những phần quan trọng của mã trong câu hỏi:Không thể tải bản đồ google computeDistanceBetween() để trả về giá trị

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry"></script> 
<script type="text/javascript" > 

    var myArray1= [['location1', lat1, lng1], ['location2', lat2, lng2], ...]; 
    var myArray2= [['locationA', latA, lngA], ['locationB', latB, lngB], ...]; 
    var arrays = [myArray1, myArray2]; 

    function codeStart() { 
     var orig; 
     var startAddress = document.getElementById("start").value; 
     geocoder.geocode({ 'address': startAddress}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       var i = 0; 
       var input = results[0].geometry.location; 
       while (i < arrays.length) {    
        orig = closest(input, arrays[i]); 
       } 
      } 
     }); 
    } 

    function closest(latlng, array){ 
     var distance; 
     var c = 0; 
     while (c < array.length){ 
      var location = array[c]; 
      var locationlatlng = new google.maps.LatLng(location[1],location[2]); 
      distance = new google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng); 
      alert(distance); // popup box says "[object, Object]" 
      c++; 
     } 
    } 

</script> 

Trả lời

11

computeDistanceBetween là một phương pháp tĩnh. Vì vậy, dòng này:

distance = new google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng); 

phải được điều này thay vì:

distance = google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng) 

Bằng cách này, khi alert() nói với bạn rằng một cái gì đó là một đối tượng, đó là một thời điểm tốt để chuyển sang console.dir() thay vì alert() vì vậy bạn có thể (ít nhất là trong một số trình duyệt) xem nội dung của đối tượng trong các công cụ console/dev. Nếu bạn không biết nhiều về bảng điều khiển JavaScript của mình, hãy kiểm tra. Nó sẽ giúp bạn tiết kiệm rất nhiều thời gian.

2
distance = new google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng); 

Đối với một số lý do bạn đã sử dụng cú pháp để tạo ra một đối tượng mới. Đó là lý do tại sao, khi bạn alert(distance), bạn đang thấy rằng distance là một đối tượng.

computeDistanceBetween is just a function:

distance = google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng); 
Các vấn đề liên quan