Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't get google maps computeDistanceBetween() to return a value

The computeDistanceBetween() function in google maps geometry library will not return a value for me. Using the alert function it says the distance is "[object, Object]". Can anyone see where I'm going wrong? here are the important parts of the code in question:

<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>
like image 763
slapee Avatar asked Jul 25 '11 01:07

slapee


1 Answers

computeDistanceBetween is a static method. So this line:

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

should be this instead:

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

By the way, when alert() tells you that something is an object, it's a good time to switch to console.dir() instead of alert() so you can (at least in some browsers) look at the contents of the object in the console/dev tools. If you don't know much about your JavaScript console, check it out. It will save you tons of time.

like image 68
Trott Avatar answered Nov 04 '22 07:11

Trott