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>
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With