2014-11-20 1 views
1

У меня проблема с этим кодом. Я правильно вижу Карты Google, с моим фактическим расположением в центре экрана Android, но я не вижу маркера, что бы я ни делал.Как добавить маркер в приложение Ionic с плагином Cordola Geolocation

Это HTML:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 
    <style> 
     html, body { 
      height:100%; 
     } 
    </style> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 
    <script src="cordova.js"></script> 
    <script src="js/app.js"></script> 
    <script src="js/services.js"></script> 
    </head> 
    <body ng-app="starter" ng-controller="GeoCtrl" class="platform-android"> 
    <div id="map_canvas" style="width:100%; height:100%"></div> 
    </body> 
</html> 

Это является services.js

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

.factory('Location', ['$q', function($q) { 
    return { 
     getLocation: function(options) { 
      var q = $q.defer(); 
      navigator.geolocation.getCurrentPosition(function(position) { 
       q.resolve(position); 
      }, function(err) { 
       q.reject(err); 
      }); 
      return q.promise; 
     } 
    } 
}]); 

И это app.js:

angular.module('starter', ['ionic', 'starter.services']) 
.run(function($ionicPlatform) { 
... 
}) 
.controller('GeoCtrl', function($scope, Location) { 
    $scope.lat; 
    $scope.long; 
    $scope.map; 
    $scope.marker; 
    Location.getLocation().then(function (position) { 
    $scope.lat = position.coords.latitude; 
    $scope.long = position.coords.longitude; 
    var mapOptions = { 
     center: new google.maps.LatLng($scope.lat, $scope.long), 
     zoom: 14, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    $scope.map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
    }, function(err) { 
     // error 
    }); 
    $scope.marker = new google.maps.Marker({ 
     position: new google.maps.LatLng($scope.lat, $scope.long), 
     map: $scope.map, 
     title: 'Holas!' 
    }, function(err) { 
     console.err(err); 
    }); 
}); 

Спасибо!

ответ

2

Я надеюсь, что это может помочь кому-то:

Я назвал маркер снаружи, то поток, в то время как он должен быть назван внутри:

Location.getLocation().then(function (position) { 
    $scope.lat = position.coords.latitude; 
    $scope.long = position.coords.longitude; 
    var mapOptions = { 
     center: new google.maps.LatLng($scope.lat, $scope.long), 
     zoom: 14, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    $scope.map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
    $scope.marker = new google.maps.Marker({ 
     position: new google.maps.LatLng($scope.lat, $scope.long), 
     map: $scope.map, 
     title: 'Holas!' 
    }, function(err) { 
     console.err(err); 
    }); 
    }, function(err) { 
     // error 
    }); 

Теперь она работает.