带有Ionic框架1的ngCordova Geolocation插件不适用于Android

时间:2016-09-24 05:19:51

标签: android ionic-framework geolocation ngcordova

我正在尝试使用Cordova和Ionic框架在Google地图上获取当前地址,非常简单的项目。

这是我所做的代码。

  1. 的index.html
  2. <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
        <title></title>
    
        <link rel="manifest" href="manifest.json">
        <meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *">
    
        <!-- un-comment this code to enable service worker
        <script>
          if ('serviceWorker' in navigator) {
            navigator.serviceWorker.register('service-worker.js')
              .then(() => console.log('service worker installed'))
              .catch(err => console.log('Error', err));
          }
        </script>-->
    
        <link href="lib/ionic/css/ionic.css" rel="stylesheet">
        <link href="css/style.css" rel="stylesheet">
    
        <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
        <link href="css/ionic.app.css" rel="stylesheet">
        -->
    
        <!-- ionic/angularjs js -->
        <script src="lib/ionic/js/ionic.bundle.js"></script>
    
        <!-- cordova script (this will be a 404 during development) -->
        <script src="js/ng-cordova.min.js"></script>
        <script src="cordova.js"></script>
    
        <!-- your app's js -->
        <script src="js/app.js"></script>
      </head>
      <body ng-app="starter">
    
        <ion-pane ng-controller="AppCtrl">
          <ion-header-bar class="bar-stable">
            <h1 class="title">Location</h1>
            <button class="button button-clear button-royal pull-right" ng-click="uploadLocation()">
              <i class="icon ion-ios-upload">Upload</i>
            </button>
          </ion-header-bar>
          <ion-content>
            <div id="map" data-tap-disabled="true"></div>
          </ion-content>
        </ion-pane>
        <script src="https://maps-api-ssl.google.com/maps/api/js?libraries=places"></script>
      </body>
    </html>

    1. app.js
    2. // Ionic Starter App
      
      // angular.module is a global place for creating, registering and retrieving Angular modules
      // 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
      // the 2nd parameter is an array of 'requires'
      angular.module('starter', ['ionic', 'ngCordova'])
      
      .controller('AppCtrl', function($scope, $cordovaGeolocation, $ionicLoading, $http, $ionicPopup, $ionicPlatform) {
        
          $ionicLoading.show({
              template: '<ion-spinner icon="bubbles"></ion-spinner><br/>Acquiring location!'
          });
            
          var posOptions = {
              enableHighAccuracy: true,
              timeout: 20000,
              maximumAge: 0
          };
      
          $scope.currentLocation = null;
      
          $cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
              var lat  = position.coords.latitude;
              var long = position.coords.longitude;
                
              var myLatlng = new google.maps.LatLng(lat, long);
                
              var mapOptions = {
                  center: myLatlng,
                  zoom: 16,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
              };          
                
              var map = new google.maps.Map(document.getElementById("map"), mapOptions);
              var geocoder = new google.maps.Geocoder;
              geocoder.geocode({ 'location': myLatlng }, function(results, status) {
                if (status === google.maps.GeocoderStatus.OK) {
                  marker = new google.maps.Marker({
                    position: myLatlng,
                    map: map,
                    title: 'I an here!'
                  });
      
                  $scope.currentLocation = results[0].formatted_address;
                  console.log($scope.currentLocation);
                }
              })          
                
              $scope.map = map;   
              $ionicLoading.hide();           
                
          }, function(err) {
              $ionicLoading.hide();
              console.log(err);
          });
          $scope.uploadLocation = function() {
                             console.log(5555555555)
            var link = 'http://dashboard.tiniestory.com/api/set';
            $http.post(link, {location: $scope.currentLocation})
              .then(function(res) {
                  $ionicPopup.alert({
                      title: 'Alert',
                      template: 'Your location "' + $scope.currentLocation + '" has been sent to the server.'
                  });
              });
          }
      })
      
      .run(function($ionicPlatform) {
        $ionicPlatform.ready(function() {
          if(window.cordova && window.cordova.plugins.Keyboard) {
            // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
            // for form inputs)
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      
            // Don't remove this line unless you know what you are doing. It stops the viewport
            // from snapping when text inputs are focused. Ionic handles this internally for
            // a much nicer keyboard experience.
            cordova.plugins.Keyboard.disableScroll(true);
          }
          if(window.StatusBar) {
            StatusBar.styleDefault();
          }
        });
      })

      1. 的style.css
      2. #map {
            height: 100%;
            width: 100%;
        }

        它在浏览器和iOS设备上都能正常运行。 但是不能在Android上运行,我该如何解决这个问题?

0 个答案:

没有答案