javascript - 使用 watchPosition 仅显示当前位置标记

标签 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(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);

关于javascript - 使用 watchPosition 仅显示当前位置标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15538760/

相关文章:

javascript - Meteor:显示以天分隔的文档

javascript - 如何将 Typescript 与原生 ES6 Promises 结合使用

google-maps - 在 Google Maps API v3 中计算折线(路线)和标记之间的距离

html - 如何在没有媒体查询的情况下让我的文本换行的同时制作两个 div 堆栈

ios - 移动ios上的背景图像模糊

javascript - 显示元素列表中的元素

JavaScript 打印代码无法正常工作

android - 不幸的是在 Google Maps api v2 中停止

google-maps - 在 Google map 上放置图钉

java - J2ME 中的 HTTP 身份验证