【问题标题】:Geolocation find my position not working地理位置发现我的位置不起作用
【发布时间】:2015-01-31 18:44:21
【问题描述】:

我使用地理定位在我的 angularjs/ionic 应用程序中使用了地图。有一个功能可以找到我。它应该指出我们在地图中的位置。我无法实现这个。这里有什么问题?它只是显示进度圈,但不指向我的位置。

我的js

.controller('MapCtrl', function($scope, $ionicLoading, $compile, $state, $ionicPlatform, $location) {


    $scope.map = map;


    $scope.basel = {
        lat: 6.802107,
        lon: 79.921749
    };


    $ionicPlatform.ready(function() {
        navigator.geolocation.getCurrentPosition(function(position) {



            $scope.gotoLocation(6.802107, 79.921749);

            $scope.$apply();
        }, function(e) {
            console.log("Error retrieving position " + e.code + " " + e.message)
        });


        $scope.gotoLocation = function(lat, lon) {
            if ($scope.lat != lat || $scope.lon != lon) {
                $scope.basel = {
                    lat: lat,
                    lon: lon
                };
                if (!$scope.$phase) $scope.$apply("basel");
            }
        };

        for (var i = 0; i < $scope.locations.BranchAndAtms.length; i++) {

            var objectMark = $scope.locations.BranchAndAtms[i];
            $scope.whoiswhere.push({
                "name": objectMark.outlet,
                "lat": objectMark.lat,
                "lon": objectMark.lon,
                "date": objectMark.address
            });


        };

        for (var i = 0; i < $scope.locationsIDC.IDC.length; i++) {

            var objectMark = $scope.locationsIDC.IDC[i];
            $scope.whoiswhere.push({
                "name": objectMark.outlet,
                "lat": objectMark.lat,
                "lon": objectMark.lon,
                "date": objectMark.address
            });


        };

    });


    //google.maps.event.addDomListener(window, 'load', initialize);

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



    $scope.centerOnMe = function() {

        if (!$scope.map) {

            return;

        }

        $scope.loading = $ionicLoading.show({

            content: 'Getting current location...',
            showBackdrop: false

        });
        window.alert("dgdfd");

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

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

})

我的html

<div id="map" style="width:100%; height:100%; padding:10px; margin-top:45px;" ng-show="demo == 'ios'">

            <app-map style="height:100%; width:100%;"
            center="basel"
            zoom="3"
            markers="whoiswhere"
            > 
            </app-map>


    </div>

 <ion-footer-bar class="bar-dark">
      <a ng-click="centerOnMe()" class="button button-icon icon ion-navigate">Locate the nearest Branch</a>
    </ion-footer-bar>

【问题讨论】:

    标签: javascript angularjs google-maps-api-3 geolocation ionic-framework


    【解决方案1】:

    把这个放到你的AndroidManifest.xml中

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    

    【讨论】:

    • 我已经添加了地理定位插件,但是没有用。当我在 .xml 中尝试使用它时,它起作用了。不明白为什么插件没有将此添加到 .xml
    【解决方案2】:

    我使用的是原生 JavaScript 而不是 Angular 和 Google Maps API,但这是我的地理位置代码:

    if (navigator.geolocation) {
    
        function success(geoposition) {
            var userLocation = new google.maps.LatLng(geoposition.coords.latitude, geoposition.coords.longitude);
            map.setCenter(userLocation);
        };
    
        function error(error) {
            console.warn('ERROR(' + error.code + '): ' + error.message);
        };
    
        var options = {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 10000
        }
    
        navigator.geolocation.getCurrentPosition(success, error, options);
    
    }
    

    您的第一个(成功)函数具有参数“位置”,但您似乎没有使用它来获取用户位置。我认为您需要提取 position.coords.latitude 和 position.coords.longitude。我还将我的函数包装在一个“if”子句中,以防不支持地理定位功能。

    【讨论】:

      猜你喜欢
      • 2014-05-16
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多