2014-10-10 46 views
0

我正在開發一個android應用程序(使用Phonegap構建),它需要顯示用戶的當前位置並在Google地圖上加載KMZ文件(使用多行)使用谷歌地圖api)。Android 4.2.2不會爲我的應用程序加載谷歌地圖

我的應用程序將地圖加載到特定的縮放級別(11),地圖根據用戶當前位置居中(減少數據消耗)。我注意到,對於Android操作系統4.2.2地圖根本沒有加載,消息顯示「訪問被拒絕到您當前的位置」。

另一方面地圖加載正確的android操作系統4.1.2,4.3,4.4(沒有得到任何消息)。

這是Android 4.2.2的安全問題嗎? 或者它是與我用來構建APK的Phonegap有關的錯誤?
我該如何解決這個問題?移動設備需要做什麼配置?

謝謝

+0

您可以分享您的代碼如何調用Google API? – AAhad 2014-10-10 12:18:50

+0

src =「https://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false&language=el&key= < MY API KEY> – Thanos 2014-10-10 12:50:37

+0

謝謝,我想看看你正在調用地圖和可能的JS代碼的HTML代碼片段 – AAhad 2014-10-10 13:15:40

回答

0

它適用於Android 4.2.2或任何其他支持的版本。您的代碼設置可能存在錯誤。

我剛剛通過創建示例應用程序進行了重新確認。

步驟:

(1)包括谷歌API密鑰和地圖JS的HTML標題部分鏈接

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <meta name="format-detection" content="telephone=no" /> 
     <meta name="msapplication-tap-highlight" content="no" /> 
     <meta name="viewport" content="width=device-width, height=device-height" /> 
     <link rel="stylesheet" type="text/css" href="css/index.css" /> 
     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_VALUE_&sensor=true"></script> 
     <title>Hello World</title> 
    </head> 
    <body> 
      <b>Road View</b> 
      <div id="map-canvas" style="width: 100%; height: 200px"></div> 
      <b>Street View</b>   
      <div id="pano" style="width: 100%; height: 200px;"></div> 
      <b>Live Traffic Update View</b> 
      <div id="traffic" style="width: 100%; height: 200px;"></div> 

     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/index.js"></script> 
    </body> 
</html> 

(2)在index.js文件聲明以下函數來渲染地圖

var app = { 
     initialize: function() { 
      this.bindEvents(); 
     }, 
     bindEvents: function() { 
      document.addEventListener('deviceready', this.onDeviceReady, false); 
     }, 
     onDeviceReady: function() { 
      app.receivedEvent('deviceready'); 
      app.renderMap(); 
     }, 
     receivedEvent: function(id) { 
     }, 
     renderMap: function() { 
      // --- Road View 
      var fenway = new google.maps.LatLng(42.345573, -71.098326); 
      var mapOptions = { 
       center: fenway, zoom: 11 
      }; 
      var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

      // ---- Street View 
      var panoramaOptions = { 
       position: fenway, 
       pov: { heading: 34, pitch: 10 } 
      }; 
      var panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions); 
      map.setStreetView(panorama); 

      // ---- Live Traffic View 
      var myLatlng = new google.maps.LatLng(34.04924594193164, -118.24104309082031); 
      var mapOptions = { 
       zoom: 13, 
       center: myLatlng 
      } 
      var map = new google.maps.Map(document.getElementById('traffic'), mapOptions); 
      var trafficLayer = new google.maps.TrafficLayer(); 
      trafficLayer.setMap(map); 
     } 
    }; 

    app.initialize(); 

(3)在AndroidManifest.xml文件中添加權限。

(4)設備上設置您的項目API級別到您想要的版本,例如4.2.2 (5)運行應用程序,它應該表現出三種不同類型的地圖視圖的(路街和實時路況)

enter image description here

enter image description here

+0

不知何故,它不顯示結果窗口中的AndroidManifest.xml權限:( <使用權限android:name =「android.permission。ACCESS_COARSE_LOCATION「/> <使用權限android:name =」android.permission.ACCESS_FINE_LOCATION「/> <使用權限android:name =」android.permission.ACCESS_LOCATION_EXTRA_COMMANDS「/> <使用權限android:name =」 android.permission.INTERNET「/> – AAhad 2014-10-10 19:05:09

0

這是JS文件的代碼,我用於在地圖上加載KML文件,獲取當前位置,顯示標記:

'use strict'; 

angular.module('ehunter.controllers', []). 
    controller('RegionListCtrl', ['$scope', '$http', '$window', 
     function($scope, $http, $window) { 
      $http.get('regions.json').success(function(data) { 
       $scope.regions = data; 
      }); 
      $scope.openBrowser = function(url){ 
      $window.open(url, "_blank", "location=yes"); 

     } 
    }]) 
    .controller('RegionViewCtrl', ['$scope', '$routeParams', 
     function($scope, $routeParams) { 
      $scope.region = angular.fromJson($routeParams.r); 
      var map; 
      var src = "MY_SERVER"+ $scope.region.File; 

      initialize(); 


      function initialize() { 
       map = new google.maps.Map(document.getElementById('map_canvas'), { 
        zoom: 11, 
        mapTypeId: google.maps.MapTypeId.TERRAIN 
       }); 
       loadKmlLayer(src, map); 

      } 

      function loadKmlLayer(src, map) { 
       var kmlLayer = new google.maps.KmlLayer(src, { 
        suppressInfoWindows: true, 
        preserveViewport: true, 
        map: map 
       }); 

      } 

      getLocation(); 

      function getLocation(){ 
        if (navigator.geolocation) { 
        navigator.geolocation.getCurrentPosition(function displayPosition(position) { 

          var marker = new google.maps.Marker({ 
          position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude), 
           map: map 
          }); 
         marker.setVisible(true); 
         marker.setMap(map); 
         map.setCenter(marker.position); 

         }); 

    }} 
    }]) 
相關問題