1

几周前我一直在使用phonegap,但是当我使用地理定位服务时发现问题。在浏览器中工作正常,但编译不(使用 build.honegap.com)。

在我的 config.xml 文件中,我有这样的内容:

Config package name, id, author, icon,etc...

<feature name="http://api.phonegap.com/1.0/device" />
<plugin name="Geolocation" value="CDVLocation" />
<plugin name="Geolocation" value="org.apache.cordova.GeoBroker" />
<feature name="http://api.phonegap.com/1.0/geolocation"/>

和一个 androidmanifest.xml 只有这个:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.me"
    android:versionCode="1"
    android:versionName="6.5" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

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

只是为了测试,我做了这个脚本(jquery),但只是在 chrome 浏览器上工作。总是触发错误函数(总是输入 if 语句,“Nav on”):

document.addEventListener("deviceready", onDeviceReady(), false);

function onDeviceReady(){
    if (navigator.geolocation) { 
        alert('Nav on');
        setTimeout(function(){
        navigator.geolocation.getCurrentPosition(function(position){
            alert("success " + position.coords.latitude + ' , ' + position.coords.longitude)
        }, function(error){
            alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
        },
        {enableHighAccuracy:true});
        }, 600);
    }else{
        alert('Nav off');
    }
};

知道我的代码有什么问题吗?我整个周末都在为此工作,一无所获

PS,我有一个三星 Galaxy s2 用于测试,对我的英语感到抱歉。

我忘了说错误消息说:

代码:2
消息:无法启动地理定位服务

4

2 回答 2

1

首先确保您的代码没有错误!如果您确定,那么您还需要做一件事!只需更改 Android 设备的安全设置即可。转到设置 -> 安全 -> 选中“未知来源”复选框,以允许您的 apk 正常运行。

希望它对我有用!

最好的,

于 2014-10-31T21:09:51.930 回答
-1

在某些 Android 设备上

navigator.geolocation.getCurrentPosition()

不会返回地理位置,除非您将 enableHighAccuracy 选项设置为 true。用这个替换对 navigator.geolocation 的调用:

navigator.geolocation.getCurrentPosition(onSuccess, onError,{enableHighAccuracy: true});
于 2013-09-30T23:56:10.343 回答