0

我正在尝试编写一个返回表示设备位置的对象的函数:我尝试过:

  function getDevicePosition () {
    var positionObject;
    if (isDeviceReady) {
        navigator.geolocation.getCurrentPosition(function (position) {
            ;
            positionObject = position;
            console.log('location updated');
            console.log(positionObject.coords.longitude);//1. works
        }, function (err) {
            console.log('Failed to get device position' + err);
            return null;
        });

    } else {
        warnUser();
        return null;
    }
    console.log(positionObject.coords.longitude);//2. doesnt work as positionObject is null.
    return positionObject;
}

也许我应该改写我的问题。请注意,我添加了标记语句 1 和语句 2 的注释。如果我在语句 1 中初始化位置对象。为什么它在语句 2 中未定义?

4

1 回答 1

1

android标签来看,我假设您正在 Android 设备上进行测试。

如果是这种情况,您需要在AndroidManifest.xml文件中添加正确的权限。

特别是

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />

在这里阅读更多。

于 2012-09-28T09:21:11.947 回答