我是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。