Phonegap 地理位置 PERMISSION_DENIED
Posted
技术标签:
【中文标题】Phonegap 地理位置 PERMISSION_DENIED【英文标题】:Phonegap geolocation PERMISSION_DENIED 【发布时间】:2014-11-04 08:03:51 【问题描述】:我即将使用 PhoneGap 创建一个应用程序。但我对地理位置有疑问。即使我为该应用启用了位置服务,错误代码仍为“PERMISSION_DENIED”。
我注意到两件事。 当我在水合模式下运行应用程序时,地理定位工作。 当我访问使用地理定位的地图时,应用程序崩溃。返回,然后再次返回地图。
iPhone 5s ios8 org.apache.cordova.geolocation 0.3.10 Phonegap 3.5
// Code for Map page
if (page.name === 'map')
var latitude = page.query.latitude;
var longitude = page.query.longitude;
function success(position)
var latitude = page.query.latitude;
var longitude = page.query.longitude;
var mapcanvas = document.createElement('div');
mapcanvas.id = 'mapcontainer';
mapcanvas.style.height = '100%';
mapcanvas.style.width = '100%';
document.getElementById('map-wrap').appendChild(mapcanvas);
var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var malet = new google.maps.LatLng(latitude, longitude);
var options =
zoom: 10,
center: coords,
mapTypeControl: false,
navigationControlOptions:
style: google.maps.NavigationControlStyle.SMALL
,
mapTypeId: google.maps.MapTypeId.ROADMAP
;
var map = new google.maps.Map(document.getElementById("mapcontainer"), options);
var marker = new google.maps.Marker(
position: malet,
map: map
);
var address = new google.maps.InfoWindow();
google.maps.event.addListener(marker, 'click', function()
$$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true', function(json)
address.setContent(json.results[0].formatted_address);
);
address.open(map, marker);
);
var infowindow = new google.maps.InfoWindow(
map: map,
position: coords,
content: 'Här är du!'
);
var bounds = new google.maps.LatLngBounds();
bounds.extend(malet);
bounds.extend(coords);
map.fitBounds(bounds)
// onError Callback receives a PositionError object
function onError(error)
switch (error.code)
case 1:
myApp.alert("Du måste aktivera platstjänser för BAPPen.");
break;
case 2:
myApp.alert("Din position kunde inte fastställas.");
break;
case 3:
myApp.alert("The request to get user location timed out.");
break;
case 4:
myApp.alert("An unknown error occurred.");
break;
var options =
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
;
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(success, onError, options);
else
error('Geo Location is not supported');
【问题讨论】:
问题可能出在config.xml
的路径上。它是上传的一部分吗?看看thejackalofjavascript.com/framework7-phonegap-getting-started/…
我在插件列表中找到了地理位置,但它仍然不起作用。 @Arvind
【参考方案1】:
确认您手机的 GPS 已开启,并且已在您的 config.xml 文件中启用。这通常是 PERMISSION_DENIED 的来源。
看http://cordova.apache.org/docs/en/3.3.0/cordova_geolocation_geolocation.md.html-(在app/res/xml/config.xml中)
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
(在 app/AndroidManifest.xml 中)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
此外,您遇到的错误也在这里得到解决:
PositionError.PERMISSION_DENIED: Returned when users do not allow the app to retrieve position information. This is dependent on the platform.
【讨论】:
如何在 config.xml 中激活 GPS?我在配置文件中安装了 Cordova 地理位置。 @wbt11a 我尝试为 iOS 添加代码,但实际上并没有。 @wbt11a 我认为无论如何,如果您的意思是应用程序是我的文件所在的文件夹。 @wbt11a以上是关于Phonegap 地理位置 PERMISSION_DENIED的主要内容,如果未能解决你的问题,请参考以下文章