我正在创建一个AngularJS应用程序,我正在使用cordova将其转换为移动应用程序。现在我想使用cordova的地理定位插件,但显然它返回undefined。 我已经将android添加为平台并调整了manifest和config.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" />
<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中,我收到以下错误:
未捕获的TypeError:无法在file:///android_asww/scripts/app.js中读取未定义的属性'coords':80
我在这里遗漏了什么吗? 提前致谢 HS。
答案 0 :(得分:1)
您将$ rootScope.onSuccess()传递给地理位置成功处理程序,这意味着“我希望您运行$ rootScope.onSuccess(),结果就是成功处理程序。”你的意思可能是:$ rootScope.onSuccess(即删除parens)。