谷歌地图WatchPosition无法正常运作

时间:2017-07-26 15:12:11

标签: javascript angularjs google-maps ionic-framework google-maps-markers

我正在尝试实现我需要跟踪用户位置的功能,首先,我使用getCurrentLocation检索用户的位置然后我传递坐标以放置指示用户位置的标记(标记变量是全局设置的),然后我调用watchPosition函数,以便它可以跟踪用户位置(如果其位置已更改)。 此代码是为Ionic应用程序实现的,但在任何Web应用程序上都将使用相同的逻辑(您可以忽略$ cordovaGeolocation,因为它与navigator.geolocation相同)

var map = null;
var myPosition = null;

$scope.initMap = function(){
    var posOptions = {
        enableHighAccuracy: false,
        timeout: 20000,         
    };

    $cordovaGeolocation.getCurrentPosition(posOptions).then(
        function (position) {
            var lat  = position.coords.latitude;
            var long = position.coords.longitude;
            var myLatlng = new google.maps.LatLng(lat, long);               
            $scope.me = myLatlng;

            var mapOptions = {
                center: myLatlng,
                zoom: 11,
                disableDefaultUI: true,
                mapTypeId: google.maps.MapTypeId.ROADMAP,

            };          

            map = new google.maps.Map(document.getElementById("map"), mapOptions); 

            myPosition = new google.maps.Marker({
                map: map,
                position: myLatlng,
                draggable:false,
                icon: "http://i.stack.imgur.com/orZ4x.png",
            });             
            var circle = new google.maps.Circle({radius: User.getUser().distance*1000, center: myLatlng}); 
            map.fitBounds(circle.getBounds());              
            $cordovaGeolocation.watchPosition(win);
        },
        function(err) {
            console.log(err);
        }
    );
}

watchPosition函数的回调如下:

var win = function(position) {
    var lat = position.coords.latitude;
    var long = position.coords.longitude;
    var myLatlng = new google.maps.LatLng(lat, long);
    if(myPosition==null){
        myPosition = new google.maps.Marker({
            map: map,
            position: myLatlng,
            draggable:false,
            icon: "http://i.stack.imgur.com/orZ4x.png",
        });
        myPosition.setMap(map);
    }else{
        myPosition.setPosition(myLatlng);
    }
    map.panTo(myLatlng);
};

1 个答案:

答案 0 :(得分:0)

基本上这里的错误是$ cordovaGeolocation,用navigator.geolocation替换它解决了我的问题。