Я использую Google Maps API для определения расстояния между двумя почтовыми индексами Великобритании.
var yourPostcode = $("#YourPostcode").val();
var restaurantPostcode = $("#Postcode").val();
var point1 = GetPointFromPostcode(yourPostcode);
var point2 = GetPointFromPostcode(restaurantPostcode);
var distance = point1.distanceFrom(point2, 3959).toFixed(1);
Однако функция GetPoint вызывает Google API в асинхронном режиме, и поэтому к моменту времени, когда вычисляется расстояние, точка 1 и 2 не установлены (я полагаю, это то, что происходит?)
Я также ставлю оповещения после каждого оператора, чтобы проверить значение переменных, и, делая это, я получаю правильное значение расстояния, ожидая, когда я нажму кнопку ОК, должно быть, у меня было достаточно времени, чтобы получить результаты? Хотя это больше не делает: (
Вот функция получения баллов
function GetPointFromPostcode(postcode) {
var point;
localSearch.execute(postcode + ", UK");
if (localSearch.results[0]) {
var resultLat = localSearch.results[0].lat;
var resultLng = localSearch.results[0].lng;
point = new GLatLng(resultLat, resultLng);
} else {
$(".PostcodeError").append("Postcode Invalid");
}
return point;
}
Я знаю, что могу установить обратный вызов при локальном поиске, который будет вызываться, когда результаты возвращаются, но проблема здесь в том, что есть 2 поиска.
Я хочу вызывать линию вычисления расстояния только после того, как ОБА поиски дали результаты.
Вы знаете, как я мог это сделать?
Спасибо