谷歌地图观察位置无法正常工作



我正在尝试实现一个需要跟踪用户位置的功能,首先,我使用 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: "https://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: "https://i.stack.imgur.com/orZ4x.png",
});
myPosition.setMap(map);
}else{
myPosition.setPosition(myLatlng);
}
map.panTo(myLatlng);
};

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

相关内容

  • 没有找到相关文章

最新更新