1
对于用户输入他的地址的网站,我试图找到最接近他的位置,用户可以在其中收集订购的商品。计算驾驶距离Google Maps API
根据用户的地址,我可以将可能的接机位置缩小到2到5之间。所以我想计算用户地址(A点)和可能的接机位置之间的距离。
演示here工作正常,只有两个地址。我尽可能地调整了代码,以处理两个以上的地址。我发布了我的JS代码here,因为我似乎无法在SO中正确格式化它。
在代码中有两个警报。第一个警报正确显示了不同的拾取位置。但第二个警报总是显示最后的取货地点。
任何人都可以解释为什么吗?
HTML:
<p id="hello">Hello World</p>
的JavaScript:
var geocoder, location1, location2, gDir;
function initialize(counter) {
if(counter == 0){
geocoder = new GClientGeocoder();
gDir = new GDirections();
}
GEvent.addListener(gDir, "load", function() {
var drivingDistanceMiles = gDir.getDistance().meters/1609.344;
var drivingDistanceKilometers = gDir.getDistance().meters/1000;
$("#results").append('<strong>Driving Distance: </strong>' + drivingDistanceKilometers + ' kilometers<br /><br />');
});
}
function getDistance(agency_add, counter) {
initialize(counter);
geocoder.getLocations(agency_add, function (response) {
if (!response || response.Status.code != 200) {
alert("Sorry, we were unable to geocode the address" + agency_add);
}
else {
location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
//alert("ONE: "+location1.address);
geocoder.getLocations(document.forms[0].address1.value, function (response) {
//alert("TWO: "+location1.address);
if (!response || response.Status.code != 200) {alert("Sorry, we were unable to geocode the second address");}
else {
location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
gDir.load('from: ' + location1.address + ' to: ' + location2.address);
}
});
}
});
}
$(document).ready(function(){
//put each agency address in an array
var agencies = [];
$(".agency_field").each(function(index) {
agencies.push($(this).val());
});
for (var i = 0; i < agencies.length; i++){
var res = getDistance(agencies[i], i);
}
});
这就是我需要的所有信息,谢谢澄清! – stef 2011-04-13 11:02:46