ionic ngcordova map 地圖

幾乎每個APP都會有地圖 所以在這裏記錄一下

1.在index.html 中

1     <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB16sGmIekuGIvYOfNoW9T44377IU2d2Es&sensor=true"></script>
2 
3     <!-- cordova script (this will be a 404 during development) -->
4      <script src="lib/ionic/js/ng-cordova.min.js"></script>
5     <script src="cordova.js"></script>

2. CSS

1 map {
2   display: block;
3    100%;
4   height: 100%;
5 }
6 .scroll {
7   height: 100%;
8 }

3. 生成一個指令

 1 .directive('map', function() {
 2   return {
 3     restrict: 'E',
 4     scope: {
 5       onCreate: '&'
 6     },
 7     link: function ($scope, $element, $attr) {
 8       function initialize() {
 9         var mylang=new google.maps.LatLng(43.07493, -89.381388);
10         var mapOptions = {
11           center: mylang,
12           zoom: 16,
13           mapTypeId: google.maps.MapTypeId.ROADMAP
14         };
15         var map = new google.maps.Map($element[0], mapOptions);
16         //Marker + infowindow + angularjs compiled ng-click
17         var marker = new google.maps.Marker({
18           position: mylang,
19           map: map,
20           title: 'Uluru (Ayers Rock)'
21         });
22         var infowindow = new google.maps.InfoWindow({
23         content:"Hello World!"
24          });
25         google.maps.event.addListener(marker, 'click', function() {
26           infowindow.open(map,marker);
27         });
28         $scope.onCreate({map: map});
29 
30         //Stop the side bar from dragging when mousedown / tapdown on the map
31         google.maps.event.addDomListener($element[0], 'mousedown', function (e) {
32           e.preventDefault();
33           return false;
34         });
35       }
36 
37       if (document.readyState === "complete") {
38         initialize();
39       } else {
40         google.maps.event.addDomListener(window, 'load', initialize);
41       }
42     }
43   }
44 });

4.在index.html 中寫入 map 標籤 1 <map on-create="mapCreated(map)"></map> 

5.設置控制器 

 1 .controller('MapCtrl', function($scope, $ionicLoading, $cordovaGeolocation) {
 2   $scope.mapCreated = function(map) {
 3     $scope.map = map;
 4   };
 5 
 6   $scope.centerOnMe = function() {
 7     console.log("Centering");
 8     if (!$scope.map) {
 9       return;
10     }
11 
12     $scope.loading = $ionicLoading.show({
13       content: 'Getting current location...',
14       showBackdrop: false
15     });
16     $cordovaGeolocation
17       .getCurrentPosition()
18       .then(function(pos) {
19         var lat = pos.coords.latitude
20         var long = pos.coords.longitude
21         console.log('Got pos', pos);
22         $scope.map.setCenter(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude));//
23         var marker=new google.maps.Marker({
24               map: $scope.map,
25               position: new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude)
26         });//這個marker 設置了一下 
27         $scope.loading.hide();
28       }, function(err) {
29         // error
30       });
31     // navigator.geolocation.getCurrentPosition(function (pos) {
32     //   console.log('Got pos', pos);
33     //   $scope.map.setCenter(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude));
34     //        var marker=new google.maps.Marker({
35     //           map: $scope.map,
36     //           position: new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude)
37     //     });
38     //   $scope.loading.hide();
39     // }, function (error) {
40     //   alert('Unable to get location: ' + error.message);
41     // });
42   };
43 });

6. 忘記了...為了更加的準確 還是添加了ngcordova plugin 插件

 1 cordova plugin add org.apache.cordova.geolocation 

不要忘記了注入 ngCordova
$cordovaGeolocation
原文地址:https://www.cnblogs.com/xieyier/p/4019184.html