Titanium.Geolocation.getCurrentPosition出错

问题描述 投票:2回答:2

我正在使用地理定位服务开发应用程序,iOS没有问题,但是当我尝试在Android上测试时,会发生位置错误。

[ERROR] :  GeolocationModule: (main) [39266,89619] Unable to get current position, location is null

我不知道发生了什么,因为我有其他应用程序与几乎相同的代码正常工作。

任何帮助将不胜感激。

Here is my Code

here is my Xml

here is preview

here is the next preview

我使用SDK 7.0.2GA提前感谢。

::编辑::

我使用建议对代码进行了一些更改。现在,应用程序停留在“位置”事件中并且卡在那里。

谢谢您的帮助

function SolicitarServicio( win, idservicio, datos, datosCompletos ){ 
       if(Titanium.Geolocation.hasLocationPermissions(      Titanium.Geolocation.AUTHORIZATION_WHEN_IN_USE)) { 
          IniciarSolicitudDeServicios( win, idservicio, datos, datosCompletos     ); 
       }   
       else{
                 Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_WHEN_IN_USE, function(e) {
               if(!e.success){
                  Ti.API.info("*** No premissions: " + e.error );
                  Utiles.Alerta(L("error_permisos_geolocalizacion"));
                  return false;
               }
               else{
                  IniciarSolicitudDeServicios( win, idservicio, datos,     datosCompletos ); 
               }

         });  
       }
       function IniciarSolicitudDeServicios( win, idservicio, datos, datosCompletos ) {
           if( params.isAndroid ){            
               var gpsProvider = Ti.Geolocation.Android.createLocationProvider({
               name: Ti.Geolocation.PROVIDER_GPS,
               });
               Ti.Geolocation.Android.addLocationProvider(gpsProvider);                      
           }        
           preloader.show(win);
           // The app stucks here, the if( e.success ) never happend
           Titanium.Geolocation.addEventListener("location",function(e){   
               if(e.success){    
                  preloader.hide(win);      
                  var latitud  = e.coords.latitude;
                  var longitud = e.coords.longitude;
                  Ti.API.info("*** Now get the coords and show te window");
                  var Button = require("src/common/Button");   
                  var WindowTotalBeige = require("src/common/ventanaTotal");   
                  var winServicio = new WindowTotalBeige("S", "G U A P P U R A" );
                  var vistaAgenda = require("src/vistas/solicitarServicio");
                  vistaAgenda.SolicitarServicio( winServicio, idservicio, datos, latitud, longitud, datosCompletos );    
                  winServicio.open();    
               }                  
               else{
                  preloader.hide(win);      
                  Utiles.Alerta( "ERROR: " +e.code + " " + e.error );
               }                                                            
           }); 
       }        
}

解决了!!将SDK更新到7.1.0 RC无代码更改。

android geolocation appcelerator
2个回答
1
投票

GetCurrentLocation仅返回该位置的缓存结果。您需要使用eventlistener来查看位置。


0
投票

我在使用Ti SDK 7.5.0 GA的Motorla G4 plus设备中也遇到了同样的问题。但在咨询Appc团队时,他们告知GPS位置提取因设备硬件而异。根据Appc的支持,“如果你在室内进行测试,那么你可能需要走出去锁定GPS卫星。有些GPS硬件比其他硬件更好。有时连接也需要更长时间。注意您的代码的首选提供商是GPS。这意味着设备在等待GPS锁定时不会“回退”从“WIFI”或“蜂窝提供商”获取位置。这不是软件问题,我们担心你遇到了硬件/物理限制。“但我在室内也使用三星智能手机获得了这个位置。

我已经验证了这一点,通过走出大楼,我能够使用“Titanium.Geolocation.getCurrentPosition(function(e))成功获得位置”,这在我的室内失败了。

© www.soinside.com 2019 - 2024. All rights reserved.