2016-11-06 4 views
0

Ich benutze Cordova Geolocation-Plugin. Wenn ich meine index.html im Browser starte, kann ich meinen Standort auf der Karte sehen. Aber wenn ich mein Projekt auf Android-Gerät ausführen, kann ich nichts bekommen. Ich sehe nur eine weiße Seite. Ich benutze Android-Version Kitkat. Ich bekomme Anweisung von https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-geolocation/index.html diesen Link. Ich versuchte es mit anderen Fragen. Aber es funktioniert nicht. Wie kann ich dieses Problem lösen?Cordova Geolocation-Plugin funktioniert nicht auf Android-Gerät

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="format-detection" content="telephone=no"> 
    <meta name="msapplication-tap-highlight" content="no"> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC-id_ZLCzQktYMWI2XrrMulXYGOzCUYhk"></script> 
</head> 
<body> 
    <div id="map" style="width:500px;height:500px;"> 
    </div> 
    <script> 
     var Latitude = undefined; 
     var Longitude = undefined; 
     // Get geo coordinates 
     function getMapLocation() { 
      navigator.geolocation.getCurrentPosition 
      (onMapSuccess, onMapError, { enableHighAccuracy: true }); 
     } 
     // Success callback for get geo coordinates 
     var onMapSuccess = function (position) { 
      Latitude = position.coords.latitude; 
      Longitude = position.coords.longitude; 
      getMap(Latitude, Longitude); 
     } 
     // Get map by using coordinates 
     function getMap(latitude, longitude) { 
      var mapOptions = { 
       center: new google.maps.LatLng(0, 0), 
       zoom: 1, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      map = new google.maps.Map 
      (document.getElementById("map"), mapOptions); 
      var latLong = new google.maps.LatLng(latitude, longitude); 
      var marker = new google.maps.Marker({ 
       position: latLong 
      }); 
      marker.setMap(map); 
      map.setZoom(15); 
      map.setCenter(marker.getPosition()); 
     } 
     // Success callback for watching your changing position 
     var onMapWatchSuccess = function (position) { 
      var updatedLatitude = position.coords.latitude; 
      var updatedLongitude = position.coords.longitude; 
      if (updatedLatitude != Latitude && updatedLongitude != Longitude) { 
       Latitude = updatedLatitude; 
       Longitude = updatedLongitude; 
       getMap(updatedLatitude, updatedLongitude); 
      } 
     } 
     // Error callback 
     function onMapError(error) { 
      console.log('code: ' + error.code + '\n' + 
       'message: ' + error.message + '\n'); 
     } 
     // Watch your changing position 
     function watchMapPosition() { 
      return navigator.geolocation.watchPosition 
      (onMapWatchSuccess, onMapError, { enableHighAccuracy: true }); 
     }  
     getMapLocation(); 
    </script> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript" src="js/index.js"></script>  
</body> 
</html> 

Es ist mein AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.example.geo" xmlns:android="http://schemas.android.com/apk/res/android"> 
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true"> 
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> 
     <intent-filter android:label="@string/launcher_name"> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-feature android:name="android.hardware.location.gps" /> 
</manifest> 
+0

Bitte lesen Sie die Dokumentation vor der Codierung: http://cordova.apache.org/docs/en/dev/cordova/events/events.html#deviceready – Joerg

Antwort

0

hinzufügen cordova js vor googlemap api js

<script src="cordova.js"></script> 

Und rufen Sie Ihre Funktion getMapLocation(); entweder in deviceReady oder documentReady Funktion wie

//deviceReady 
document.addEventListener("deviceready", getMapLocation, false); 


//documentReady 
$(document).ready(function(){ 
    getMapLocation(); 
}); 

Dies wird Ihnen helfen.

+0

Ihre Lösung funktioniert nicht Ich rufe bereits getMapLocation Funktion auch ich habe versucht, hinzuzufügen cordova js vor Google Maps API hat wieder nicht funktioniert. – Hermes

+0

Gemäß Ihrem Code rufen Sie keine Funktion nach dem anderen Dokument auf, deshalb wird die Funktion nicht div für die Karte erstellt. Versuchen Sie also, die Funktion in das Dokument bereit zu rufen und stellen Sie sicher, dass GPS in Ihrem Gerät eingeschaltet ist. –

Verwandte Themen