phonegap和地理定位服务无法在设备上运行

时间:2013-03-04 03:10:23

标签: cordova

我正在使用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句子,“导航”):

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');
    }
};

有人知道我的代码有什么问题吗?我整个周末一直都在工作,没有什么

P.S,我有一个三星galaxy s2进行测试,抱歉我的英语。

我忘了说错误信息说:

  

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

2 个答案:

答案 0 :(得分:1)

首先确保您的代码没有错误! 如果你确定那么你还需要做一件事! 只需更改Android设备的安全设置即可。 转到设置 - &gt;安全 - &gt;选中“未知来源”复选框 为了让你的apk运行没有任何问题。

希望它能像我一样工作!

最好,

答案 1 :(得分:-1)

在某些Android设备上

navigator.geolocation.getCurrentPosition()
除非将enableHighAccuracy选项设置为true,否则

不会返回地理位置。将调用替换为navigator.geolocation:

navigator.geolocation.getCurrentPosition(onSuccess, onError,{enableHighAccuracy: true});