У меня есть функция в контроллере карты для преобразования адреса в google.maps.latlng, и я хочу вернуть это значение, но моя функция ничего не возвращает. Я думаю, это потому, что значения меняются внутри другой функции, но я не могу понять, как это решить.Вспомогательная функция контроллера ничего не возвращает
addressToLatLng: function(address) {
var geocoder = new google.maps.Geocoder(), lat, lng, latlng;
geocoder.geocode({ 'address': address }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
latlng = new google.maps.LatLng(lat, lng);
console.log(latlng); // will give me the object in the log
}
});
return latlng; // nothing happens
},
Firstofall спасибо! Код работает нормально, но не решает мою проблему. Я хочу использовать latlng вне обратного вызова. Например. a1 = this.addressToLatLng (address1) // a1 получает значение/объект LatLng a2 = this.addressToLatLng (address2) google.maps.geometry.spherical.computeDistanceBetween (a1, a2) – user3102211
@ user3102211: Для того, чтобы сделать это вам понадобится машина времени, чтобы вы могли пойти в будущее и получить значение до того, как оно будет существовать. Это когда обратный вызов называется, что значение доступно для вас в первый раз, до этого вы не сможете его получить. Вы можете вернуть обещание из метода, но это всего лишь способ поместить обратный вызов в объект, который вы можете вернуть, вам все равно нужно получить значение из обещания асинхронно. – Guffa
Ну, есть ли другая возможность получить расстояния от вашего текущего местоположения до некоторых адресов списка (без использования lat/lng, потому что это легко, когда они уже заданы)? – user3102211