1

ユーザーの現在地を表示するために、Googleマップ上に単一のマーカーを作成しようとしています。次のコードを使用してそれを行うことができますが、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);
4

2 に答える 2

3

関数の外でマーカーを宣言し、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);
于 2013-03-21T03:32:42.310 に答える