Javascript 使用watchPosition仅显示当前位置标记
我试图在谷歌地图上创建一个标记来显示用户的当前位置。使用以下代码,我可以做到这一点,但每次watchPosition刷新时,它都会创建一个新点。如何在每次添加新点时清除以前的标记Javascript 使用watchPosition仅显示当前位置标记,javascript,google-maps,mobile,gps,cordova,Javascript,Google Maps,Mobile,Gps,Cordova,我试图在谷歌地图上创建一个标记来显示用户的当前位置。使用以下代码,我可以做到这一点,但每次watchPosition刷新时,它都会创建一个新点。如何在每次添加新点时清除以前的标记 // Geolocation var win = function(position) { var iconimage = new google.maps.MarkerImage('images/current_location_small.png', new google.maps.Size(
// Geolocation
var win = function(position) {
var iconimage = new google.maps.MarkerImage('images/current_location_small.png',
new google.maps.Size(15, 15),
new google.maps.Point(0,0),
new google.maps.Point(7, 7)
);
var lat = position.coords.latitude;
var long = position.coords.longitude;
var myLatlng = new google.maps.LatLng(lat, long);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon: iconimage
});
marker.setMap(map);
};
var watchID = navigator.geolocation.watchPosition(win);
您可以在函数外部声明标记,并使用
setPosition(LatLng)
方法
// Geolocation
var marker=null;
var win = function(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
var myLatlng = new google.maps.LatLng(lat, long);
if(marker==null){
var iconimage = new google.maps.MarkerImage('images/current_location_small.png',
new google.maps.Size(15, 15),
new google.maps.Point(0,0),
new google.maps.Point(7, 7)
);
marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon: iconimage
});
marker.setMap(map);
}else{
marker.setPosition(myLatlng);
}
};
var watchID = navigator.geolocation.watchPosition(win);
您可以在函数外部声明标记,并使用
setPosition(LatLng)
方法
// Geolocation
var marker=null;
var win = function(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
var myLatlng = new google.maps.LatLng(lat, long);
if(marker==null){
var iconimage = new google.maps.MarkerImage('images/current_location_small.png',
new google.maps.Size(15, 15),
new google.maps.Point(0,0),
new google.maps.Point(7, 7)
);
marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon: iconimage
});
marker.setMap(map);
}else{
marker.setPosition(myLatlng);
}
};
var watchID = navigator.geolocation.watchPosition(win);
或者如注释setnull中所述,然后重新绘制。 当然,屏幕会闪烁,并以gps更新的速度重新绘制 删除我下面代码中的if行,您将不断绘制轨迹
var watchID = navigator.geolocation.watchPosition(function(position) {
// Get current position
pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
// Redefine current location marker
if (typeof(marker) != "undefined") marker.setMap(null);
marker = new google.maps.Marker({
position: pos,
map: map,
title: 'you are here',
icon : user
},watchOptions);
}); //end constant watchPosition
或者如注释setnull中所述,然后重新绘制。 当然,屏幕会闪烁,并以gps更新的速度重新绘制 删除我下面代码中的if行,您将不断绘制轨迹
var watchID = navigator.geolocation.watchPosition(function(position) {
// Get current position
pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
// Redefine current location marker
if (typeof(marker) != "undefined") marker.setMap(null);
marker = new google.maps.Marker({
position: pos,
map: map,
title: 'you are here',
icon : user
},watchOptions);
}); //end constant watchPosition
很高兴提供帮助,以供将来参考。
marker.setMap(null)
从映射中删除标记:)@kevmc此答案没有意义,因为您放置的代码没有使用标记。serMap(null)很高兴提供帮助,以供将来参考。marker.setMap(null)
从映射中删除标记:)@kevmc此答案没有意义,因为您放置的代码没有使用marker.serMap(null)