2014-10-10 3 views
0

Я разрабатываю приложение для Android (с помощью Phonegap), которое требует отображения текущего местоположения пользователя и загрузки файла KMZ (с полилиниями) в Google Map (использование google map api).Android 4.2.2 не загружает карты Google для моего приложения

Мое приложение загружает карту с определенным уровнем масштабирования (11), а карта центрируется на основе текущего местоположения пользователя (уменьшает потребление данных). Я заметил, что для Android 4.2.2 карта вообще не загружается, сообщение отображается «доступ запрещен к вашей текущей позиции».

С другой стороны, карта загружена правильно для ОС Android 4.1.2, 4.3, 4.4 (не получить никакого сообщения).

Это проблема безопасности/ошибка для android 4.2.2? Или это ошибка, связанная с Phonegap, которую я использую для создания APK?
Как решить эту проблему? Есть ли какая-либо конфигурация, которую мне нужно сделать на мобильном устройстве?

Благодаря

+0

Вы можете поделиться своим кодом, как вы называете API Google? – AAhad

+0

src = "https://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false&language=el&key= < MY API KEY> – Thanos

+0

Спасибо, мне захотелось увидеть фрагмент кода HTML, в котором вы вызываете карты и, возможно, код JS тоже – AAhad

ответ

0

Это прекрасно работает на Android 4.2.2 или любой другой поддерживаемой версии. Возможно, ошибка в настройках вашего кода.

Я только что подтвердил, создав образец приложения.

Шаги:

(1) Включить Google API Key и Карты 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) Запустить приложение на устройстве, и он должен показать три различных типа Map Просмотров (Road, Улица и Живой трафик)

enter image description here

enter image description here

+0

Как-то его НЕ показывает разрешения AndroidManifest.xml в окне результатов :( AAhad

0

Это JS файл кода I использовать для загрузки 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); 

         }); 

    }} 
    }]) 
Смежные вопросы