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脚本的新手。 请帮助我从上述方法中获取协调。 警报只是未定义。
问题在于警报的位置。警报需要进入 onSuccess 回调方法。以下是 JavaScript 如何解释您的代码。
- 它创建变量 alt、lat 和 long
- 它创建函数onSuccess和onError
- 它调用navigator.geolocation.getCurrentPosition方法,将我们的onSuccess和onError回调交给它。
- 地理位置异步发生
- 警报长和纬度
- 地理位置完成并调用成功或错误
- 如果调用了 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 });
你应该
定义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 });