2014-11-04 103 views
2

我即將創建一個使用PhoneGap的應用程序。但是我有一個地理定位問題。即使我爲應用程序啓用了位置服務,錯誤代碼也是「PERMISSION_DENIED」。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'); 
    } 

} 
+0

該問題可能與'config.xml'的路徑有關。它是否是上傳的一部分?看看http://thejackalofjavascript.com/framework7-phonegap-getting-started/#comment-1676196881 – Arvind 2014-11-04 18:24:40

+0

我發現插件列表中的地理位置,但它仍然不起作用。 @Arvind – Slaffe 2014-11-04 18:33:11

回答

0

確認您的手機的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. 
+0

如何在config.xml中激活GPS? 我已將Cordova地理位置安裝在配置文件中。 @ wbt11a – Slaffe 2014-11-04 15:02:32

+1

我試圖爲iOS添加代碼,但實際上並沒有。 @ wbt11a – Slaffe 2014-11-04 15:44:27

+0

我認爲無論如何,如果你的意思是應用程序是我的文件所在的文件夾。 @ wbt11a – Slaffe 2014-11-04 21:40:23