2011-07-25 6 views
7

GoogleマップジオメトリライブラリのcomputeDistanceBetween()関数は私の値を返しません。 alert関数を使用すると、距離は "[object、Object]"と表示されます。誰かが私が間違っているのを見ることができますか?ここで問題にコードの重要な部分です:あなたは、新しいオブジェクトを作成するための構文を使用していたいくつかの理由Googleマップを取得できません値を返すためのcomputeDistanceBetween()

<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> 

答えて

11

computeDistanceBetweenが静的​​メソッドです。だから、この行は:

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

ではなく、これを次のようになります。ところで

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

alert()は何かがオブジェクトであることを示していますとき、それはあなたをconsole.dir()に切り替える代わりにそうalert()に良い時期です(少なくともいくつかのブラウザでは)コンソール/ devツールでオブジェクトの内容を見ることができます。 JavaScriptコンソールについてよく知らない場合は、チェックしてください。それは時間のトンを節約します。

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

。だから、あなたがalert(distance)になったら、distanceが対象であることがわかります。

computeDistanceBetween is just a function

distance = google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng); 
関連する問題