Cordova 地理位置无效的Phonegap android google地图

Cordova 地理位置无效的Phonegap android google地图,cordova,Cordova,我正在使用jquery mobile开发一个phonegap应用程序。我没有得到当前位置。在设备上,未启动就绪OnSuces或onError功能。我想是的,只是我不知道位置。这是我的密码 function onDeviceReady() { var options = { frequency: 3000 }; watchID = navigator.geolocation.watchPosition(onSuccess, onError, options)

我正在使用jquery mobile开发一个phonegap应用程序。我没有得到当前位置。在设备上,未启动就绪OnSuces或onError功能。我想是的,只是我不知道位置。这是我的密码

function onDeviceReady() {
          var options = { frequency: 3000 };
          watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);              }
    function  onSuccess(position){
       var minZoomLevel = 6;
       map = new google.maps.Map(document.getElementById('map_canvas'), {
                  zoom: minZoomLevel;
           center: new google.maps.LatLng(position.coords.latitude,position.coords.longitude),
           mapTypeId: google.maps.MapTypeId.ROADMAP
       });

        var marker = new google.maps.Marker({
         position: new google.maps.LatLng(position.coords.latitude,position.coords.longitude),
         map: map,
        });  
     }
    function onError() {
        alert("Sorry,we cann't find your location");
    }
**带地理位置的Phonegap android谷歌地图**
**首先在html页面中添加文件**
外接程序javascript
$(文档).ready(函数(){
navigator.geolocation.getCurrentPosition(onSuccess,onError);
});
成功时的功能(位置){
纬度=位置坐标纬度;
lng=位置坐标经度;
var secheltLoc=新的google.maps.LatLng(lat,lng);
var myMapOptions={
缩放:16
,中心:secheltLoc
,mapTypeId:google.maps.mapTypeId.HYBRID
};
var theMap=new google.maps.Map(document.getElementById(“Map_canvas”),myMapOptions);
var image=“img/map\u pin.png”
var marker=new google.maps.marker({
地图:主题地图,
可拖动:错误,
位置:新google.maps.LatLng(lat,lng),
可见:对,
图标:图像,
标题:标题//标题
});
var infowindow=new google.maps.infowindow({
内容:contentString
});
信息窗口。打开(地图、标记);
google.maps.event.addListener(标记“单击”,函数(e){
信息窗口。打开(地图、标记);
});
}
/**OneError回调接收POSITIONERROR对象**/
函数onError(错误)
{  
开关(错误代码)
{  
case error.PERMISSION\u DENIED:警报(MSG\u PERMISSION\u DENIED);
打破
案例错误。位置不可用:警报(消息位置不可用);
打破
case error.TIMEOUT:警报(消息超时);
打破
违约:
警报(消息未知);
打破
} 
}

我正在开发的一些应用程序也有同样的问题。这个问题/解决方案是某些最新版本phonegap上的android设备所特有的。 我现在记不起是在哪里找到的,但它对我很有用:

不要指定onError回调,将调用包装在try-catch中,并使用它来处理onError场景

try{
    navigator.geolocation.getCurrentPosition(function (position) {
       // If the position can be found send the current location to order the deals
       doSomething(position.coords.longitude, position.coords.latitude);
    });
}
catch(err){ doSomethingWithoutCoordinates(); }
似乎当你给phonegap一个错误选项时,它没有尝试成功就接受了

免责声明:我不能确定是否会调用catch,这对我来说很有效,而且总是会给我一个坐标值,因此您可能希望在将其投入生产之前进行彻底测试。

请尝试此方法

var options =  { maximumAge: 3000, timeout: 3000, enableHighAccuracy: true };
navigator.geolocation.getCurrentPosition(success, navFail,options);
如果您使用的是android,则必须使用“EnableHighAccurance:true”


谢谢

好的,这对我来说很有用:

  • 确保您的设备或模拟器已启用GPS

  • 确保安装了地理位置插件(运行
    phonegap本地插件add org.apache.cordova.geolocation

  • 添加超时并设置EnableHighAccurance:

    navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
    
    在某些模拟器中,您需要将EnableHighAccurance设置为false,所以如果仍然不起作用,请尝试

  • 如果您使用的是Android仿真器,它不会读取GPS值,所以我们需要通过命令行发送它们。我们需要在emulator正在运行的端口中启动telnet会话(您可以在emulator窗口标题中检查端口,在我的示例5554中,检查开头的编号):

  • 然后运行命令

        geo fix -122.4 37.78
    
    如果你关闭应用程序,你需要重新发送地理位置,因此如果它不起作用,只需在打开应用程序之后,在超时事件触发之前运行
    geo-fix
    命令。

    请像这样使用(确保你的设备位置设置为打开

    当我这样使用它时,它可以在IOS上工作,但不能在Android设备上工作

    { maximumAge: 3000, timeout: 3000, enableHighAccuracy: true }
    

    我们已经试过了。。但它不起作用。。。昨天谷歌安卓系统出现了问题。因为相同的代码在ios中运行良好…检查设备或模拟器中的GPS服务打开或关闭。如果我在这里遇到相同的问题,您是否解决了您的问题?
        geo fix -122.4 37.78
    
    navigator.geolocation.getCurrentPosition(onSuccess,onError,{enableHighAccuracy:true});
    
    { maximumAge: 3000, timeout: 3000, enableHighAccuracy: true }