我正在使用Phonegap版本3.30以及Sencha Touch提供的Phonegap构建和UI元素。该应用程序在第一页上包含一个地图,使用开放街道地图和使用sencha触摸库https://market.sencha.com/extensions/ext-ux-leafletmap的传单来渲染地图。
如果我将地图设置为不使用在地图上显示您的位置的地理位置选项,则地图会在所有平台上完美呈现,但是当我启用设置以使用地理位置时,地图会完美渲染并覆盖当前位置所有平台(iOS,Android 2.0)但不是Android 4.0 +。
事实上,在Android上,地图根本不会呈现与使用不正确权限的行为类似的行为。我已将应用程序设置为通过Config.xml Phonegap geolocation插件使用3位置权限。以下是Config.xml https://www.dropbox.com/s/c1im3twg21mnxi6/config.xml
的链接总结一下: 只有启用了Geolocation的Android 4.0才能防止地图呈现,但地图和地理定位适用于所有其他平台。
有谁知道造成这种情况的原因是什么?我没有错误打印到控制台,只要我可以权限是正确的,因为它适用于Android 2.0我完全被难倒。
下面的一些图片说明了这个问题,请注意,当应用程序在网络浏览器上运行时,Geolocation也可以使用。
未启用地理定位的Android未加载
iOS正确加载Geolocation
答案 0 :(得分:0)
我已经解决了这个问题,这个问题发生在Android 4.2,4.3和4.4上。
您必须在调用Ext.util.geolocation时显式启用以下选项。允许高精度和频率。这是一个令人头疼的问题@Sencha请这么简单。
var geo = Ext.create('Ext.util.Geolocation', {
autoUpdate: false,
allowHighAccuracy: true,
frequency: '3000',
listeners: {
locationupdate: function(geo) {
var currentLat = geo.getLatitude();
var currentLng = geo.getLongitude();
var altitude = geo.getAltitude();
var speed = geo.getSpeed();
var heading= geo.getHeading();
// Ext.Msg.alert('Latitude Longitude'+ currentLat + currentLng); }, locationerror:function(geo,bTimeout,bPermissionDenied,bLocationUnavailable,message){ if(bTimeout){ // Ext.Msg.alert('超时发生','无法获得当前位置“); } 其他{ // alert('发生错误。'); } } } }); geo.updateLocation();