2014-09-29 181 views
1

我对科尔多瓦的地理位置插件有一个奇怪的问题。
完美搭配我的平板电脑(华硕TF201,Android 4.4.2),但它不适用于我的手机(LG L9,Android 4.1.2)和仿真器(Nexus 5,Android 4.4.4)。
它打印什么都没有,甚至没有onErrorGeo功能..
这是代码:navigator.geolocation.getCurrentPosition与科尔多瓦

var onSuccessGeo = function(position) { 
    $("#geolocalization").html('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>'); 
}; 
function onErrorGeo(error) { 
    $("#geolocalization").html('code: ' + error.code + '<br>' + 
     'message: ' + error.message + '<br>'); 
} 
function Geolocal(){ 
    navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo); 
} 

回答

0

代码看起来正确的我,但只是要确定,你可以尝试使用类似这样的

警报消息
function onErrorGeo(error) { 
    alert("error"); 
} 

确保错误功能真的不起作用。你也可以在成功功能中做到这一点。

在你的代码是不工作的情况下,请确保您正在执行

navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo); 

后PhoneGap的事件deviceready已经启动。

你可以试试这个:

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

function onDeviceReady() 
    navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo); 
} 

更新:您还应该确保你的应用程序的config.xml中有这个声明的控件标签内的某处:

<gap:plugin name="org.apache.cordova.geolocation" /> 
+0

谢谢,但我认为这是我的手机的问题..再次重新启动,现在它的工作.. – 2014-10-01 13:03:13

1

所以我也来在这个问题上,但我根据Mozilla的文档计算出来,其中cordova插件如下:https://developer.mozilla.org/en-US/docs/Web/API/Geolocation

在文档中你可以提供一个PositionOption作为第三个参数为navigator.geolocation.getCurrentPosition。看到这里的文档状态:https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions

所以,如果你改变你的代码

function onDeviceReady() 
    navigator.geolocation.getCurrentPosition(onSuccessGeo, onErrorGeo, {timeout: 5000}); 
} 

5秒钟后它会超时错误,否则默认的超时是Infinity,因此它将继续等待代码被解雇,如果您的位置关闭或者GPS无法获取正确的位置,这可能永远不会。

希望这会有所帮助。