Невозможно использовать переменную из 1 функции в другую функцию - PullRequest
0 голосов
/ 30 октября 2019

Я хочу использовать lat и lng из функции getLocation () в моем маркере, но он не будет работать.

Я добавил предупреждение, потому что, если это работает, все будет.

I tried var lat = ...
I tried world.lat = ...

Что-то с возвращаемыми значениями

function getLocation() {
var onSuccess = function (position) {
    console.log('Latitude: ' + position.coords.latitude + '\n' +
        'Longitude: ' + position.coords.longitude + '\n' +
        'Altitude: ' + position.coords.altitude + '\n' +
        'Accuracy: ' + position.coords.accuracy + '\n' +
        'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
        'Heading: ' + position.coords.heading + '\n' +
        'Speed: ' + position.coords.speed + '\n' +
        'Timestamp: ' + position.timestamp + '\n');

    lat = position.coords.latitude;
    $('.locationLatitude').text(lat);
    lng = position.coords.longitude;
    $('.locationLongitude').text(lng);
    console.log(`latitude: ${lat} longitude: ${lng}`);
};

function onError(error) {
    console.log('code: ' + error.code + '\n' +
        'message: ' + error.message + '\n');
    alert(`code: ${error.code}
    message: ${error.message}
    Please turn on your GPS`);
}

navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
alert(lat, lng);
function meOnMap() {
    marker2 = L.marker([lat, lng]).addTo(map).bindPopup('Your Location').openPopup();
}

Я ожидал, что значения lat и lng возвращают свои значения из другой функции, но это не так.

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Похоже, вы хотите, чтобы lat и lng находились в области видимости при ссылке в функции meOnMapКомментарии находятся на правильном пути, вы можете объявить их как глобальные переменные. Чтобы сделать это, просто поместите var lat, lng; вверху вашего файла.

Или вы можете добавить некоторые параметры в ваше объявление функции meOnMap и вызвать его внутри вашей функции обратного вызова success, после того как она выполнит всю обработкуматериал:

function meOnMap(lat, lng) {
    marker2 = L.marker([lat, lng]).addTo(map).bindPopup('Your Location').openPopup();
}
var onSuccess = function (position) {
    ...
    meOnMap(lat,lng);
};
0 голосов
/ 30 октября 2019

Попробуйте вызвать вашу getLocation функцию.

.... 
getLocation();
alert(lat, lng);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...