Javascript 使用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(

我试图在谷歌地图上创建一个标记来显示用户的当前位置。使用以下代码,我可以做到这一点,但每次watchPosition刷新时,它都会创建一个新点。如何在每次添加新点时清除以前的标记

// 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)