我是JS的新手,正在尝试使用PhoneGap构建一个Web应用程序,该应用程序从Android设备获取GPS坐标并将其用于某些JS功能中,但遇到了麻烦。我该如何传递“纬度”和“经度”以在“坐标”中使用它们

document.addEventListener("deviceready", onDeviceReady, false);
var lat;
var lon;

function onDeviceReady() {
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
// onSuccess Geolocation
//
function onSuccess(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
}

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

var map;
function initMap() {
    var coords =  new google.maps.LatLng(lat,lon);
    map = new google.maps.Map(document.getElementById('map_canvas'), {
              center: coords,
              zoom: 15
          });
    var marker = new google.maps.Marker({
                     position: coords,
                     map: map,
                     title: 'Вие сте тук!'
                 });
    }
    onSuccess();
    onError();
    initMap();

最佳答案

更改您的onSuccess()和initMap()。您的onSuccess会将lat和lon设置为其私有变量。另外,由于这些是异步调用,因此initMap可能最终无法获得所需的数据。这就是为什么在onSuccess()触发时需要initMap()的原因。

function onSuccess(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    initMap(lat, lon);
}

function initMap(lat, lon) {
  //your implementation
}


完成这些操作后,无需调用最后完成的onSuccess,onError和initMap。

10-06 15:01