android - Phonegap/Cordova 地理定位无法在 Android 上运行

标签 android cordova geolocation

我无法在模拟器(即使我通过 telnet geo fix)和设备上让 Geolocation 在 Android 上运行。适用于 iOS、WP8 和浏览器。

当我使用以下代码向设备询问位置时,我总是收到错误消息(在我的情况下,自定义 Retrieving your position failed for unknown reason. with null 两个错误代码和错误信息)。

相关代码:

    successHandler = (position) ->
      resolve App.Location.create
        lat: position.coords.latitude
        lng: position.coords.longitude

    errorHandler = (error) ->
      error = switch error.code
        when 1
          App.LocationError.create
            message: 'You haven\'t shared your location.'
        when 2
          App.LocationError.create
            message: 'Couldn\'t detect your current location.'
        when 3
          App.LocationError.create
            message: 'Retrieving your position timeouted.'
        else
          App.LocationError.create
            message: 'Retrieving your position failed for unknown reason. Error code: ' + error.code + '. Error message: ' + error.message

      reject(error)

    options =
      maximumAge: Infinity # I also tried with 0
      timeout: 60000
      enableHighAccuracy: true
    navigator.geolocation.getCurrentPosition(successHandler, errorHandler, options)

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

www/config.xml(以防万一)

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

使用 Cordova 3.1.0。在安卓 4.2 上测试。已安装插件。包含在 index.html 中的 Cordova.js(其他插件如 InAppBrowser 工作正常)。

$ cordova plugins ls
[ 'org.apache.cordova.console',
'org.apache.cordova.device',
'org.apache.cordova.dialogs',
'org.apache.cordova.geolocation',
'org.apache.cordova.inappbrowser',
'org.apache.cordova.vibration' ]

我一无所知。我错过了什么吗?

最佳答案

以这种方式尝试选项,看看它是否对你有用:

var options = { enableHighAccuracy: true };

navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

关于android - Phonegap/Cordova 地理定位无法在 Android 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19491875/

相关文章:

php - 地理定位接口(interface)

Android 密度拆分不起作用

java - Eclipse ADT 在签名 APK 时删除权限

ajax - 通过 ssl 的 phonegap ajax 请求错误

cordova - 如何向 Cordova 或 Phonegap 添加自定义平台

google-maps - 当标记在具有 lat 和 lng 值的情况下拖动时获取位置标题

java - 非 GPS GeoLocation API - Google 与。其他(Skyhook/Navizon/Xtify/等)

java - 打印 List/String 类型的 Arraylist 的所有元素

java - 获取手机序列号 (IMEI) 导致错误 : READ_PHONE_STATE required

android - 重写 WebSettings cordovaExample.java 导致 PhoneGap 出错