【问题标题】:Phonegap geolocation PERMISSION_DENIEDPhonegap 地理位置 PERMISSION_DENIED
【发布时间】:2023-03-31 10:00:02
【问题描述】:

我即将使用 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');
    }

}

【问题讨论】:

标签: javascript cordova geolocation


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2013-05-27
  • 1970-01-01
相关资源
最近更新 更多