位于Ionic项目中的android

时间:2015-04-30 12:25:53

标签: android angularjs google-maps angularjs-directive ionic-framework

在一个简单的离子应用程序中,我必须在地图上获取当前位置。当我点击找到我时,它在浏览器中工作正常,但它不适用于实际的Android设备。

我正在使用以下代码

View.html

            <ion-view view-title="{{navTitle}}">
             <ion-content>
                    <div id="map" data-tap-disabled="true"></div>
            </ion-content>
             <ion-footer-bar class="bar-stable">
                <a ng-click="centerOnMe()" class="button button-icon icon ion-navigate">Find Me</a>
             </ion-footer-bar>
            </ion-view>

controllers.js

        .controller('googlemap', function($scope, $ionicLoading, $compile) {
               $scope.navTitle = 'Google Map';
              $scope.$on('$ionicView.afterEnter', function(){
            if ( angular.isDefined( $scope.map ) ) {
                google.maps.event.trigger($scope.map, 'resize');
            }
          });

          function initialize() {
                //var myLatlng = new google.maps.LatLng(43.07493,-89.381388);
                var myLatlng = new google.maps.LatLng(18.520430300000000000,73.856743699999920000);
                var mapOptions = {
                  center: myLatlng,
                  zoom: 16,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById("map"),
                    mapOptions);

                //Marker + infowindow + angularjs compiled ng-click
                var contentString = "<div><a ng-click='clickTest()'>Click me!</a></div>";
                var compiled = $compile(contentString)($scope);

                var infowindow = new google.maps.InfoWindow({
                  content: compiled[0]
                });

                var marker = new google.maps.Marker({
                  position: myLatlng,
                  map: map,
                  title: 'Pune(India)'
                });

                google.maps.event.addListener(marker, 'click', function() {
                  infowindow.open(map,marker);
                });

                $scope.map = map;
              }
              initialize();

              $scope.centerOnMe = function() {
                if(!$scope.map) {
                  return;
                }

                $scope.loading = $ionicLoading.show({
                  content: 'Getting current location...',
                  showBackdrop: false
                });

                navigator.geolocation.getCurrentPosition(function(pos) {
                  $scope.map.setCenter(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude));
                  $scope.loading.hide();
                }, function(error) {
                  alert('Unable to get location: ' + error.message);
                });
              };

              $scope.clickTest = function() {
                alert('Example of infowindow with ng-click')
              };

        })

同样在我设备上的设备位置,但我仍然有问题。我长时间在屏幕上输出了以下内容。

enter image description here

2 个答案:

答案 0 :(得分:12)

使用email-address不是更容易吗?您可以从此插件获取位置(纬度和经度),然后在GoogleAPI中传递此位置。我认为这样会更容易。

ngCordova geoLocationPlugin

只是一个建议。

答案 1 :(得分:0)

此示例适用于启动GPS的应用程序。但是在您的设备中关闭GPS,然后进入应用程序并选择GPS开启,该功能始终返回GPS超时ERROR = 3.任何解决方案?
我在这里发布了这个错误: When I start the App with GPS off , and later GPS is activated, Location is not detected