在我的应用程序中,使用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();
}
由于这个原因,我没有得到当前位置。如果有任何补充方法来获得坐标,请告诉我。
谢谢。
答案 0 :(得分:1)
我知道使用Sencha Touch定位设备有几种方法:
我从未使用过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" />