【发布时间】:2013-11-13 14:36:39
【问题描述】:
我对尝试让地理定位在 Android 上运行感到很生气 我按照 Cordova 文档页面中的说明执行了步骤 我的科尔多瓦版本是 3.1.0-0.2.0
$ cordova create myApp com.mymapackage.myApp myApp
$ cordova platform add ios
$ cordova platform add android
$ cordova plugin add org.apache.cordova.geolocation
AndroidManifest 包含
<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" />
app/res/xml/config.xml 包含
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
我还复制了简单的例子来试用地理定位
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError, { timeout: 30000, enableHighAccuracy: true });
}
// onSuccess Geolocation
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
我只能得到一个超时错误。 我已经使用 ADT 模拟器、Genymotion 模拟器在许多不同的目标版本/设备上进行了尝试,并且无法从地理定位中获取任何东西。 通过添加 ios 平台,在使用 xCode 进行模拟时获得位置信息非常简单。
我开始对这件事感到绝望。有什么可以帮助的想法吗?
【问题讨论】:
-
你在真正的安卓设备上试过了吗?如果您只是在模拟器上尝试,您可能需要做一些额外的事情来伪造地理位置信息。除了超时之外,您在 logcat 中是否有任何错误?
-
这是我绝望的地方,没有与位置获取相关的错误,并且在实际设备上也不起作用。
-
您是否在设备上启用了定位服务?你也跑
cordova build了吗? -
我刚刚尝试在运行 4.3 的 Android 设备 (Nexus 7) 上运行该示例,它运行良好。我确实创建了,添加了 android,添加了插件,将文档中的“完整示例”复制到
/www/index.html,运行cordova build,运行cordova run。 -
Finallay 我设法使用 Genymotion 模拟器使其工作。我没有运行cordova build,但会尝试。现在我已经将我的应用程序部署到我的 Galaxy s2 上,它仍然是一个获取位置的 pb,超时并且看起来它无法找到任何位置,尽管网络位置已激活
标签: android ios cordova geolocation