Вы не можете вернуть значение из обратного вызова (в этом случае).Это будет означать, что внутри getCurrentPosition
возвращаемое значение из обратного вызова должно быть где-то назначено.
Назначение его глобальной переменной работает, но во время обращения к этой переменной ему не было присвоеноНовое значение еще.Например,
// x is assigned in `onSuccess`
var x;
navigator.geolocation.getCurrentPosition(onSuccess, onError);
alert(x); // will be undefined, the response is not processed yet
Подумайте об этом: getCurrentPosition
, вероятно, выполняет запрос Ajax для получения позиции.Такой запрос занимает (а) время (пару миллисекунд) и из-за этого (b) асинхронный , что означает, что JavaScript не ожидает до получения ответа.Ваш код намного быстрее .onSuccess
еще не был вызван, когда вы предупреждаете x
.
Единственное решение:
Весь код, который должен получить доступ к позиции, чтобы быть в или вызванот обратного вызова.