【问题标题】:navigator.geolocation is undefinednavigator.geolocation 未定义
【发布时间】:2013-12-29 20:46:24
【问题描述】:

我正在创建一个在 cordova 中运行的 AngularJS 应用程序,以将其转变为移动应用程序。现在我想使用科尔多瓦的地理定位插件,但显然它返回未定义。 我已经添加了 android 作为平台并调整了 manifest 和 config.xml 中的权限

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" />

android/res/xml/config.xml

<feature name="Geolocation">
    <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
<feature name="Geolocation">
    <param name="android-package" value="org.apache.cordova.GeoBroker" />
</feature>
<plugin name="Geolocation" value="org.apache.cordova.GeoBroker" />

在我的 Angular app.js 中,我创建了模块,在 module.run 中,我使用以下代码调用地理位置:

 $rootScope.onSuccess = function(position) {
        alert('right here');
        $rootScope.pos= {
            latitude: position.coords.latitude,
            longitude: position.coords.longitude,
            timestamp: position.timestamp
        }    
    };

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

    navigator.geolocation.getCurrentPosition($rootScope.onSuccess(),   $rootScope.onError());

奇怪的是……它确实进入了 onSuccess 函数,因为我看到了警报。但是,在我的 logcat 中,出现以下错误:

Uncaught TypeError: Cannot read property 'coords' of undefined at file:///android_asww/scripts/app.js:80

我在这里遗漏了什么吗? 提前致谢 HS。

【问题讨论】:

    标签: javascript android angularjs cordova


    【解决方案1】:

    您将 $rootScope.onSuccess() 传递给地理定位成功处理程序,这意味着“我希望您运行 $rootScope.onSuccess() 并且结果是成功处理程序。”您的意思可能是:$rootScope.onSuccess(即删除括号)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2010-10-21
      相关资源
      最近更新 更多