Не удается получить Google Maps computeDistanceBetween () для возврата значения - PullRequest
7 голосов
/ 25 июля 2011

Функция computeDistanceBetween() в библиотеке геометрии карт Google не вернет мне значение.Используя функцию alert, он говорит, что расстояние равно «[объект, объект]».Кто-нибудь может увидеть, где я иду не так?Вот важные части рассматриваемого кода:

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

Ответы [ 2 ]

12 голосов
/ 25 июля 2011

computeDistanceBetween - статический метод. Итак, эта строка:

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

должно быть вместо этого:

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

Кстати, когда alert() говорит вам, что что-то является объектом, самое время переключиться на console.dir() вместо alert(), чтобы вы могли (по крайней мере, в некоторых браузерах) просмотреть содержимое Объект в консоли / Dev Tools. Если вы не знаете много о своей консоли JavaScript, проверьте это. Это сэкономит вам массу времени.

2 голосов
/ 25 июля 2011
distance = new google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng);

По какой-то причине вы использовали синтаксис для создания нового объекта. Вот почему, когда вы alert(distance), вы видите, что distance является объектом.

computeDistanceBetween - это просто функция :

distance = google.maps.geometry.spherical.computeDistanceBetween(latlng, locationlatlng);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...