- ベストアンサー
Yahoo地図でマーカーを表示したり消したりする方法
- Yahooマップでクリックした場所にマーカーを表示する方法とは?
- 既にあるマーカーを消して新たにクリックした場所にマーカーを表示する方法について
- マーカーの表示と消去を行うためのソースコード
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 こんな感じで実装できませんか。 こうすることでクリックするごとに削除して、生成を繰り返します。 window.onload = function(){ var yMap = new Y.Map("map"); yMap.drawMap ( new Y.LatLng(35.66572, 139.73100), 17, Y.LayerSetId.NORMAL ); Y.Event.addListener ( yMap, 'click', putMark); // マーク用の変数 var mark; function putMark ( latlng ) { // 表示されているマークを削除 yMap.removeFeature ( mark ); // マークを新規に生成 mark = new Y.Marker ( new Y.LatLng(latlng.lat(),latlng.lng()) ); yMap.addFeature ( mark ); } }
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
ID登録が必要みたいなので、試してませんが、 >既にある場合に消す方法がわかりません。 以下のリファレンス(?)によれば、削除は removeFeature() みたいですね。 http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/js/#index4-6 常に一つ以下しかマーカーを表示しないのであれば、単純に、記録用の変数にマーカーを記憶しておいて 1)変数が定義されていれば、マーカーを削除 2)新しい位置にマーカーを表示(→変数に記憶) の手順でよいのではないでしょうか。
お礼
そうなんです。 考え方やfujillinさんがおっしゃっていただいたような方法はわかるのですが、Javascriptでどのように記述すればよいのかわからなかったのです・・・ お恥ずかしい限りです。 なんとか、No.2さんの方法でできましたので、締め切らせて頂きます。 ご回答、ありがとうございました。
お礼
ありがとうございます! 思っていた通りの挙動になりました。 変数の宣言をfunction外ですれば良かったんですね! 言われてみれば当たり前なんですが、記述したとおり、function内でマーカーを定義していたので、removeできなかったんですね。 本当に助かりました。ありがとうございます。