我必须开发一个可以创建地图并在我的位置上添加标记的应用程序。
我使用以下代码创建地图:

的HTML

....
<body ng-app="starter">
        <ion-pane>
            <ion-header-bar class="bar-stable">
                <h1 class="title">Ionic Blank Starter</h1>
            </ion-header-bar>
            <ion-content ng-controller="MapCtrl">
            <div id="map" data-tap-disabled="true"></div>
            </ion-content>
        </ion-pane>
...


JAVASCRIPT

angular.module('starter', ['ionic'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})

.controller('MapCtrl', function($scope, $ionicLoading, $compile) {
  function initialise() {
    var myLatlng = new google.maps.LatLng(53.068165,-4.076803);
    var mapOptions = {
        zoom: 15,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
      }
    var map = new google.maps.Map(document.getElementById('map'), mapOptions);
    var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
    });
    $scope.map = map;
  }
  google.maps.event.addDomListener(window, 'load', initialise);

 });


现在纬度和经度是静态的,我必须通过GPS获得mylat和mylng。
我怎样才能做到这一点? (我知道我必须使用cordova插件地理位置,但是我不知道如何)

最佳答案

您可以找到详细的文档here
以下是一些突出的步骤,这些步骤是从文档中复制的


如果Cordova版本cordova plugin addorg.apache.cordova.geolocation添加插件,
否则cordova plugin add cordova-plugin-geolocation

在需要纬度和经度的脚本中拨打此电话
navigator.geolocation.getCurrentPosition(onSuccess, onError);


整个例子是这样的

// onSuccess Callback
// This method accepts a Position object, which contains the
// current GPS coordinates
//
var onSuccess = function(position) {
    alert('Latitude: '          + position.coords.latitude          + '\n' +
          'Longitude: '         + position.coords.longitude         + '\n' +
          'Altitude: '          + position.coords.altitude          + '\n' +
          'Accuracy: '          + position.coords.accuracy          + '\n' +
          'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
          'Heading: '           + position.coords.heading           + '\n' +
          'Speed: '             + position.coords.speed             + '\n' +
          'Timestamp: '         + position.timestamp                + '\n');
};

// onError Callback receives a PositionError object
//
function onError(error) {
    alert('code: '    + error.code    + '\n' +
          'message: ' + error.message + '\n');
}

navigator.geolocation.getCurrentPosition(onSuccess, onError);


您的控制器将如下所示:

.controller('MapCtrl', function($scope, $ionicLoading, $compile) {
  function initialise() {
    function onSuccess(position){
      var myLatlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
      var mapOptions = {
        zoom: 15,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
      }
      var map = new google.maps.Map(document.getElementById('map'), mapOptions);
      var marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
      });
      $scope.map = map;
    }
    function onError(error){
      alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
  }
  google.maps.event.addDomListener(window, 'load', initialise);

 });

关于javascript - ionic 定位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32253012/

10-16 13:40