как получить координаты из метода геолокации

1
        var alt, lat, long;

        function onSuccess(position) {
            lat = position.coords.latitude;
            long = position.coords.longitude;
            alt = position.coords.altitude;

        }
        function onError(error) {
            myApp.alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n', main_title);
        }

        navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });

        alert(long + ' ' + lat);

привет, я новичок в java-скрипте. пожалуйста, помогите мне выйти из методов выше. предупреждение просто не определено.

Теги:

2 ответа

1
Лучший ответ

Проблема заключается в размещении вашего предупреждения. Предупреждение необходимо включить в методе обратного вызова onSuccess. Здесь, как JavaScript интерпретирует ваш код.

  1. Он создает переменные alt, lat и long
  2. Он создает функции onSuccess и onError
  3. Он вызывает метод navigator.geolocation.getCurrentPosition, передавая ему наши обратные вызовы onSuccess и onError
  4. Геолокация происходит асинхронно
  5. Предупреждения long и lat
  6. Геолокация завершается и вызывает либо onSuccess, либо onError
  7. Если вызывается onSuccess, значения long и lat устанавливаются в соответствующие переменные.

См. Проблему? Предупреждение происходит сразу, а геолокация происходит асинхронно. Может показаться, что геолокация происходит мгновенно, но в том, что касается потока кода, это происходит совсем немного в будущем после того, как остальная часть нашего кода завершит работу.

Вместо этого попробуйте использовать этот код:

var alt, lat, long;

function onSuccess(position) {
    lat = position.coords.latitude;
    long = position.coords.longitude;
    alt = position.coords.altitude;

    allert(long + ', ' + lat);
}
function onError(error) {
    myApp.alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n', main_title);
}

navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });
  • 0
    привет, я просто хочу сделать глобальные переменные alt, long и lat.
  • 1
    alt, long и lat уже глобальные. они начинаются как неопределенные, пока не закончится асинхронный код геолокации. мы знаем, что он закончен, когда вызывается onSuccess или onError. так что это идеальное время, также выполните наше предупреждение.
1

Вы должны определить функцию OnSuccess и получить latitude и longitude;

function onSuccess(pos) {
    var crd = pos.coords;
    console.log('Your current position is:');
    console.log('Latitude : ${crd.latitude}');
    console.log('Longitude: ${crd.longitude}');
}
navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню