Ext.util.Geolocation在sencha touch中的app中不起作用

时间:2014-08-21 11:50:24

标签: geolocation apk

在我的应用程序中,使用Ext.util.Geolocation来获取用户的当前位置。它在计算机浏览器以及移动浏览器中都有效。但是当我为android创建.apk文件时,这个类就无法正常工作。

代码是

getCurrentlocation: function () {
        var geo = new Ext.util.Geolocation({
            allowHighAccuracy : true,
            parseOptions: function() {
                var timeout = this.getTimeout(),
                    ret = {
                        maximumAge: this.getMaximumAge(),
                        enableHighAccuracy: this.getAllowHighAccuracy()
                    };

                if (timeout !== Infinity) {
                    ret.timeout = timeout;
                }
                return ret;
            },
            listeners : {
                locationupdate : function(geo) {
                    Ext.Msg.alert('Error', geo.getLatitude());
                    Proximity.app.currLat = geo.getLatitude();
                    Proximity.app.currLong = geo.getLongitude();
                    localStorage.setItem('currLat',geo.getLatitude());
                    localStorage.setItem('currLong',geo.getLongitude());
                },
                locationerror : function(geo, timeout) {
                    if (timeout){
                        console.log('Timeout occurred.');
                    } else {
                        console.log('Error occurred.');
                    }
                }
            }
        });
        geo.updateLocation();
     }

由于这个原因,我没有得到当前位置。如果有任何补充方法来获得坐标,请告诉我。

谢谢。

2 个答案:

答案 0 :(得分:1)

我知道使用Sencha Touch定位设备有几种方法:

  1. HTML5地理位置
  2. Ext.Util.Geolocation
  3. Ext.device.Geolocation
  4. 我从未使用过Ext.util.Geolocation,但是我在最新的Sencha Touch项目中使用了HTML5 Geolocation。要让HTML5 Geolocation在打包的apk和ios版本上运行,我必须集成cordova Geolocation插件。

    官方API文档 http://cordova.apache.org/docs/en/2.5.0/cordova_geolocation_geolocation.md.html

    GitHub文档 https://github.com/apache/cordova-plugin-geolocation/blob/master/doc/index.md

    之后,我可以通过以下代码片段获得经度和纬度:

    navigator.geolocation.getCurrentPosition( function(position){
                  var lat = position.coords.latitude;
                  var lng = position.coords.longitude;
            // HTML Geolocation error handling
            }, function(error){
                  if (error.code == 1) {
                      // do something
                  } else if (error.code == 2){
                      // do something
                  } else if (error.code == 3){
                      // do something
                  }
            }, 
            // Low Accuracy 
            {enableHighAccuracy: false},
            // Delivers new value after 75 seconds
            {maximumAge: 75000}
            ); // anonym function
    

    这是关于HTML5 Geolocation的一个很好的例子 http://diveintohtml5.info/geolocation.html

答案 1 :(得分:0)

确保您的清单文件包含下一个字符串:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />