2

Мое приложение отлично работает в браузере, но не отображает карту google на эмуляторе. Это приложение основано на существующем приложении, у которого уже есть карта google, работающая нормально на эмуляторе (и устройстве) Я думаю, потому что navigator.geolocation.getCurrentPosition это не запускается. Я отредактировал AndroidManifest.xml с но я все еще с этой проблемой. Это мой контроллер:Карты Google, не работающие над ионным фреймворком андроида (navigator.geolocation.getCurrentPosition)

.controller('MapsCtrl', function($scope, Service, $ionicLoading, $ionicPopup, $compile) { 
 
    $ionicLoading.show(); 
 
    Service.getSedi().then(function(result){ 
 
     var sede = result.data[0]; 
 
     navigator.geolocation.getCurrentPosition(function(pos){ 
 
      var myPosition = new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude); 
 
      var map = new GMaps({ 
 
       div: '#maps', 
 
       lat: pos.coords.latitude, 
 
       lng: pos.coords.longitude 
 
      }); 
 
      map.addMarker({ 
 
       lat: sede.indirizzo.lat, 
 
       lng: sede.indirizzo.lng, 
 
       title: sede.titolo, 
 
       infoWindow: { 
 
        content: '<h3>' + sede.titolo+ '</h3><p style="color:black">' + sede.indirizzo.address +'</p>' 
 
       } 
 
      }); 
 
      //reverse geocoding (from coordinates get human readable address) 
 
      var geocoder = new google.maps.Geocoder(); 
 
      var opt = { 
 
       lat : pos.coords.latitude, 
 
       lng : pos.coords.longitude, 
 
       callback : function(results, status) { 
 
        if (status == google.maps.GeocoderStatus.OK) { 
 
         console.log(results[1].formatted_address + ' ' + myPosition); 
 
         map.addMarker({ 
 
          position: myPosition, 
 
          infoWindow:{ 
 
           content: '<h3>Estas aquí</h3><p style="color:black">' + results[1].formatted_address + '</p>' 
 
          } 
 
         }); 
 
        } 
 
       } 
 
      }; 
 
      GMaps.geocode(opt); 
 
      //end reverse geocoding 
 
      map.drawRoute({ 
 
       origin: [pos.coords.latitude,pos.coords.longitude], 
 
       destination:[sede.indirizzo.lat,sede.indirizzo.lng], 
 
       travelMode: 'driving', 
 
       strokeColor: '#131540', 
 
       strokeOpacity: 0.6, 
 
       strokeWeight: 6 
 
      }); 
 

 
      //search places 
 
      var arrayId = []; 
 
      map.addLayer('places', { 
 
       location : new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude), 
 
       radius : 600, 
 
       types : ['cafe', 'bar', 'food'], 
 
       search: function (results, status) { 
 
        if (status == google.maps.places.PlacesServiceStatus.OK) { 
 
         for (var i = 0; i < results.length; i++) { 
 
          var place = results[i]; 
 
          //here I can use place.place_id 
 
          arrayId.push(place.place_id); 
 
          map.addMarker({ 
 
           lat: place.geometry.location.lat(), 
 
           lng: place.geometry.location.lng(), 
 
           title : place.name, 
 
           infoWindow : { 
 
            content : '<h3>'+place.name+'</h3><p style="color:black">'+(place.vicinity ? place.vicinity : place.formatted_address)+'</p><img src="'+place.icon+'"" height="20px"/>' 
 
           } 
 
          }); 
 
         } 
 
        } 
 
       } 
 
      }); 
 
      //map.zoomOut(5); 
 
      //Creo el div y los botones 
 
      var node = document.createElement("div"); 
 
      var text = document.createTextNode("ACA VAN LOS BOTONES"); 
 
      node.appendChild(text); 
 
      node.setAttribute("id", "mapBottom"); 
 
      document.getElementById("maps").appendChild(node); 
 
     },function(error){ 
 
      $ionicPopup.alert({ 
 
       title: 'Error', 
 
       template: 'code: ' + error.code + '\n' + 'message: ' + error.message + '\n' 
 
      }); 
 
     }); 
 
     $ionicLoading.hide(); 
 
    },function(){ 
 
     $ionicLoading.hide(); 
 
     $ionicPopup.alert({ 
 
      title : "Error", 
 
      template : "Server Error!<br>Restart Application!" 
 
     }); 
 
    }); 
 
})

Любые идеи? Спасибо заранее!

+1

Я добавил эти строки в AndroidManifest.xml '<использует-разрешение андроида: имя = "android.permission.ACCESS_NETWORK_STATE"/> <использует-разрешение андроида: Name =" android.permission.ACCESS_LOCATION_EXTRA_COMMANDS "/> ' –

+0

если ваша проблема не решена, добавьте список плагинов cordova, чтобы подтвердить, что вы правильно добавили плагин геолокации – aorfevre

+0

Я только что протестировал его в сотовый телефон и отлично работает, но не отображает в моем эмуляторе. это список моих плагинов: cordova-plugin-geolocation 1.0.1-dev "Геолокация" org.apache.cordova.inappbrowser 0.5.2 "InAppBrowser" –

ответ

0

Это потому, что эмулятор не имеет GPS и не может делать обновления в реальном времени, как вы видите на устройствах с GPS.

Существуют определенные способы проверки поведения геопространственных функций приложения в эмуляторе. Вы должны сделать для этого какую-то работу.

Вот некоторые ссылки:

Для Android подключения эмулятора через Telnet. (Полезная Answer)

Смежные вопросы