こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

googlemapについて教えてください。

googlemapでマーカーが追随するようにしたくて、function update(position) の関数のはじめにif(marker!=null){marker.setMap(null);}を入れてマーカーを消してから、次のマーカーがつくようにとしたつもりなのですが、うまくいきません。どのようにしたら、現在地にマーカーがつくようになるのでしょうか。下の場合マーカーがたくさんつきます。
よろしくお願いします。



<html>
<head>
<title>map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&language=ja&v=3.6"></script>

<script type="text/javascript">
var gmap;
window.onload = function(){
var myLatlng = new google.maps.LatLng( 33 , 130 );
navigator.geolocation.watchPosition(update,poserror,{maximumAge: 30000,enableHighAccuracy:1});
var myOptions = {
zoom: 15,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
gmap = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

}


function update(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;

var myLatlng = new google.maps.LatLng( lat , lng );

gmap.setCenter( myLatlng );

var marker = new google.maps.Marker({
position: myLatlng,
map: gmap
});
}

function poserror(position){alert("error");}

</script>
</head>
<body>

<div id="map_canvas" style="width:95%; height:500px ; border:solid 3px #ccc;"></div>

</body>
</html>

投稿日時 - 2014-01-20 10:27:49

QNo.8438092

すぐに回答ほしいです

質問者が選んだベストアンサー

var marker をfunction の中で定義しているため、
if(marker!=null){marker.setMap(null);}としても、
前のマーカーが存在するのに、functionを抜けたあと、
marker = nullと判断されているためでしょう。

対策としては、var gmap;と同様の位置で宣言し、
function の中では行なわないことです。
if(marker!=null){marker.setMap(null);}を
marker = new google.maps.Marker({の前に
入れれば所望の動作をするはずです。

投稿日時 - 2014-01-20 21:11:53

お礼

ありがとうございます。

投稿日時 - 2014-01-22 10:02:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問