• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Yahoo地図でマーカーを表示したり消したり・・・)

Yahoo地図でマーカーを表示したり消したりする方法

このQ&Aのポイント
  • Yahooマップでクリックした場所にマーカーを表示する方法とは?
  • 既にあるマーカーを消して新たにクリックした場所にマーカーを表示する方法について
  • マーカーの表示と消去を行うためのソースコード

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.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 ); } }

ok-rjak
質問者

お礼

ありがとうございます! 思っていた通りの挙動になりました。 変数の宣言をfunction外ですれば良かったんですね! 言われてみれば当たり前なんですが、記述したとおり、function内でマーカーを定義していたので、removeできなかったんですね。 本当に助かりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ID登録が必要みたいなので、試してませんが、 >既にある場合に消す方法がわかりません。 以下のリファレンス(?)によれば、削除は  removeFeature()  みたいですね。 http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/js/#index4-6 常に一つ以下しかマーカーを表示しないのであれば、単純に、記録用の変数にマーカーを記憶しておいて  1)変数が定義されていれば、マーカーを削除  2)新しい位置にマーカーを表示(→変数に記憶) の手順でよいのではないでしょうか。

ok-rjak
質問者

お礼

そうなんです。 考え方やfujillinさんがおっしゃっていただいたような方法はわかるのですが、Javascriptでどのように記述すればよいのかわからなかったのです・・・ お恥ずかしい限りです。 なんとか、No.2さんの方法でできましたので、締め切らせて頂きます。 ご回答、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • GoogleMap クリックで情報ウィンドウ

    GoogleMap API v3で、任意の一点をクリックするとマーカーが置かれ座標取得、 そしてそのマーカーに情報ウィンドウが出るようにしたいと思っています。 //地図クリックイベントの登録 google.maps.event.addListener(map, 'click', function(event) { if (Marker){Marker.setMap(null)}; Marker = new google.maps.Marker({ position: event.latLng, draggable: true, map: map }); infotable(Marker.getPosition().lat(), Marker.getPosition().lng(),map.getZoom()); で、マーカーの設置と座標取得はできるのですが、 new google.maps.InfoWindowをどこに置いていいのかが分かりません。 どなたかお詳しい方、ご教示願えないでしょうか。 宜しくお願い致します。

  • googleMapで情報ウィンドウの表示が崩れる

    お世話になります。 DBに登録したマーカーデータを取り出して グーグルマップに表示するツールを作ったのですが、 マーカーをクリックしてインフォメーションウィンドウを表示すると 「吹き出し」の形が切れ目が入ったように崩れてしまいます。 またそこには取り出したデータを表示もするのですが、 ドラッグして反転させないと見えない状態です。(単に文字色が白?) 以下がプログラムの内容になりますが、何かわかることがありましたらご指摘願えないでしょうか? よろしくお願い致します。 var map function startUp(){ map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(35.618, 139.7672), 10); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GScaleControl()); map.enableDoubleClickZoom(); GDownloadUrl("load.php", function(doc, stat){ eval("load=" + doc); for(var i=0; i<load.data.length; i++){ var mk = makeMarker(load.data[i].lat, load.data[i].lng, load.data[i].name); map.addOverlay(mk); } }); } function makeMarker(lat, lng, name){ var point = new GLatLng(lat,lng); var marker = new GMarker(point); GEvent.addListener(marker, "click", function(){ marker.openInfoWindowHtml("緯度:" + lat + "<br>経度:" + lng + "<br>施設名:" + name); }); return marker; } 本当はわざわざ関数化することなく下のようにやりたいのですがエラーになるので上のようにしています。 var mk = new GMarker(new GLatLng(load.data[i].lat, load.data[i].lng)); map.addOverlay(mk);

  • googlemapsAPIでマーカー表示されない

    googlemaps APIを使ったマッシュアップサイトを作る練習を本を見ながらやっていますが、 本のとおりプログラミングしても地図は表示されるのですがマーカーが表示されません。 (アップロードする前にfirefoxで確認) とりあえずv2で製作しています。 マーカーを表示させる方法を教えてください。 下記がjavascriptファイルです。よろしくお願いします。 var map window.onload = function() { load(); } function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("mymap")); map.setCenter(new GLatLng(35.6829, 139.7653), 13); } } function _d(id, htmlTxt) { document.getElementById(id).innerHTML = htmlTxt; } function createDiv(id,left,top) { var outDiv; outDiv =document.createElement('div'); outDiv.id = id; document.body.appendChild(outDiv); var tgdStyle = document.getElementById(id).style; tgdStyle.position = "absolute"; tgdStyle.left = left + "px"; tgdStyle.top = top + "px"; tgdStyle.background = "white"; } function removeDiv(id) { var outDiv = document.getElementById(id); document.body.removeChild(outDiv); } function varChk(target,type) { { return typeof(target) == type ? true : false; } } function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("mymap")); map.setCenter(new GLatLng(35.6829, 139.7653), 5); map.addControl(new GScaleControl()); map.addControl(new GLargeMapControl()); map.addControl(new GOverviewMapControl(new GSize(128,128))); } } function createGMarker(title, html, lat, lng) { var infoObj = new Object(); infoObj.title = title; var gpObj = new GLatLng(lat, lng); var marker = new GMarker(gpObj, infoObj); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); }

  • googlemap api で複数マーカー表示

    複数のマーカー表示は最初できてたんですが、 住所から座標を取得してマーカーを複数表示ができません。。 <script type="text/javascript"> function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); //地図を作成 map.setCenter(new GLatLng(35.969115,139.372559), 8); //地図を表示((中心の緯度,経度),縮尺) map.addControl(new GSmallMapControl()); //マップコントローラを付ける map.addControl(new GMapTypeControl()); //マップタイプコントローラを付ける map.addControl(new GScaleControl()); //スケールコントローラを付ける map.removeMapType(G_HYBRID_MAP); //マップタイプコントローラから地図+写真を削除する map.enableScrollWheelZoom(); //マウスホイールによるズーム処理を有効化 //マーカー追加プログラム function addMarker(lat,lng,html) { var geocoder = new GClientGeocoder(); geocoder.getLatLng ( lat, function(point) { var marker = new GMarker(new GLatLng(point,lng)); //マーカー生成 GEvent.addListener(marker,"mouseover",function(){marker.openInfoWindowHtml(html);});//マーカーにマウスが当たると情報ウィンドウを表示する map.addOverlay(marker); //マーカーをオーバレイ表示する } ); } //マーカー追加 addMarker("横浜市",'<p>html</p>'); addMarker("東京都",'<p>html</p>'); } } </script> </head> <body onload="load()" onunload="GUnload()"> 中略・・・ 初心者なもので、、、 ご回答お願いいたします。

  • グーグルマップについて教えてください。

    【やりたいこと】 グーグルマップとストリートビューを連動するところまではできました。しかし、地図をクリックして取得されるデータをマーカーが出るように設定し所までは良かったのですが、そのマーカーをクリックしても必要なデータが表示されません。どの様にしたらいいでしょうか? ソースは下記の通りです。 var map; var myPano; var panoClient; var currentLatLng = new GLatLng(35.6829, 139.7653); window.onload = function() { load(); loadd(); setEvent(); } function load() { map = new GMap2(document.getElementById("mymap"),{draggableCursor:"crosshair"}); map.setCenter(new GLatLng(35.6829, 139.7653), 8);    map.addControl(new GMapTypeControl());    map.addControl(new GLargeMapControl3D());    streetview = new GStreetviewOverlay();    map.addOverlay(streetview); map.addControl(new GOverviewMapControl(new GSize(200,200))); } function loadd() {     myPano = new GStreetviewPanorama(document.getElementById("pano")); GEvent.addListener(map,"click", function(overlay,point) { currentLatLng=point; myPano.setLocationAndPOV(currentLatLng); map.setCenter(currentLatLng); }); } function createGMarker(title, html, lat, lng) { var infoObj = new Object(); infoObj.title = title; var gpObj = new GLatLng(lat, lng); var marker = new GMarker(gpObj, infoObj); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); }

  • Google Mapsからxmlファイルの読み込み

    お世話になっております。 質問はタイトルの通りです。javascriptのソースを以下のようになります。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー var map; function initialize() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map_canvas")); map.setCenter(new GLatLng(34.5927356,135.50753655), 5); GEvent.addListener(map, "click", clickAction); } } function downloadData(){ GDownloadUrl("http://○○/yahoolocaltest2.php", function dispData(data, statusCode){ var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var lats = markers[i].getElementsByTagName("lat"); var lngs = markers[i].getElementsByTagName("lng"); var names = markers[i].getElementsByTagName("name"); var lat = parseFloat(GXml.value(lats[0])); var lng = parseFloat(GXml.value(lngs[0])); var name = GXml.value(names[0]); map.addOverlay(createMarker(lat, lng, name)); } }); } function createMarker(lat, lng, name) { var marker = new GMarker(new GLatLng(lat, lng)); var html = "<p>" + name + "</p>"; GEvent.addListener(marker, "click", function(){ marker.openInfoWindowHtml(html); }); return marker; } ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 動けない所: function downloadData()の所には”yahoolocaltest2.php”というファイルを読み込みたいですが、マーカがでないです。 xmlデータは”~~.php”なんですが、実行結果は以下のようなxmlデータに整いました。 <?xml version='1.0' encoding='UTF-8' ?> <markers> <marker> <lat>35.2570706</lat> <lng>140.3977072</lng> <name>千葉県いすみ市</name> </marker> <marker> <lat>35.6766300</lat> <lng>139.7425472</lng> <name>東京都千代田区</name> </marker> <marker> <lat>35.6785042</lat> <lng>139.7415028</lng> <name>東京都千代田区</name> </marker> </markers> この結果は"~~.xml"という名前の保存したら、表示できますが。”~~.php”の形式なら表示できないです。 全くの新人なんですが、ご指導をお待ちしております。ありがとうございます。

  • YOLPのマーカークリックでリンク先に飛ぶには?

    Yahoo! JavaScriptマップAPIを使い、日本地図に複数のマーカーに吹き出しを付けて以下の形にしました。 このマーカーをダブルクリックしたときに、それぞれ指定したリンク先に飛ぶようにしたいのですが、どのようにすればよいのでしょうか。 また、現在のところマーカーのマウスホバーで吹き出しが表示されるのですが、これをマウスクリック(タップ)で表示するにはどうすればよいでしょうか。さらに別のマーカーをクリックするとそれまで開いていた吹き出しが消えて、クリック先の吹き出しに切り替わるようにしたいと考えています。 ご教示お願いいたします。 window.onload = function(){ var ymap = new Y.Map("map"); ymap.drawMap(new Y.LatLng(35.68132732438393,139.76650149843817), 6,"map"); var markers = []; markers.push( new Y.Marker(new Y.LatLng(35.674756131624456,139.73189027331),{title: "赤坂A地点"})); markers.push( new Y.Marker(new Y.LatLng(35.67024139121164,139.72727687380439),{title: "赤坂B地点"})); markers.push( new Y.Marker(new Y.LatLng(35.63223075430667,139.88597781679755),{title: "浦安A地点"})); ymap.addFeatures( markers ); }

  • ストリートビューでマーカークリックするとエラー

    マップとストリートビューを並べて表示させるページを作成しています。 マップをクリックしたら、その箇所のストリートビューを表示させたいのですが、マーカーをクリックすると NULLまたはオブジェクトではありません。エラーがでてしまいます。 マーカーにオブジェクトが含まれてないから等かんがえていますが・・・。 var map; var panorama; function load() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map")); map.addControl(new GMapTypeControl()); map.addControl(new GLargeMapControl()); map.setCenter(new GLatLng(35.658517, 139.745493), 16); GEvent.addListener(map, "click", moveCenter); var street = new GStreetviewOverlay(); map.addOverlay(street); var option = { latlng:spoint }; var scontainer = document.getElementById("street"); panorama = new GStreetviewPanorama(scontainer, option); var spoint = new GLatLng(35.658517, 139.745493); panorama.setLocationAndPOV(spoint); } } function moveCenter(overlay, point){ map.panTo(point); panorama.setLocationAndPOV(point); panorama.show(); } ちなみに下記のページを参照しています。 http://www.ajaxtower.jp/googlemaps/gstreetviewpanorama/index3.html これに現状下記のようにマーカーをつけています。 marker = new GMarker(map.getCenter()); // マーカーコントロール作成 map.addOverlay(marker); // マーカー表示 GEvent.addListener(marker,"mouseover",onMarkerMouseMove); // マーカークリックイベント設定 marker.openInfoWindowTabsHtml(mtabs); // フキダシ表示 ----- function onMarkerMouseMove(){ // マーカーにマウス移動 marker.openInfoWindowTabsHtml(mtabs); // フキダシ表示 } なにか他に参考になるページか、マーカークリック時のストリートビューのエラー回避で参考になるものがあればうれしいです。

  • Googlemapb api 複数のマーカー表示に

    基礎的なことかもしれませんが、結構調べたりしても分からなかったので、教えてほしいです。 Googlemap api を使った複数のマーカー表示を$getJSON(jQuery)を使用しようして表示させたいのですが、表示できません。 どこがおかしいか教えてください。 【HTML】 1.<!DOCTYPE html> 2.<html> 3.<head> 4.<meta charset="UTF-8"> 5.<title>map</title> 6.<style type="text/css"> 7.html,body,#map { 8.height: 100%; 9.} 10.</style> 11.</head> 12.<body> 13.<div id="map"></div> 14.<script type="text/javascript" src="map.js"></script> 15.<script type="text/javascript" src="jquery-3.6.0.min.js"></script> 16.<script async defer 17.src="https://maps.googleapis.com/maps/api/js?key=【APIキー】&callback=initMap"> 18.</script> 19.</body> 20.</html> 【JavaScript】 1.var map; 2.var marker = []; 3.var data = []; 4.var center = {lat: 36.72073,lng: 137.27112}; 5.function initMap() {//地図の作成 6.map = new google.maps.Map(document.getElementById('map'), { // #mapに地図を埋め込む 7. center: center,// 地図の中心を指定 8. zoom: 15 // 地図のズームを指定 9. }); 10. $.getJSON("aaaaa.json", function(json){ 11. for (var i = 0; i <= json.length-1; i++) { 12. data.push( 13. { 14. 'name': json[i].name, 15. 'lat': json[i].lat, 16. 'lng': json[i].lng 17 }); 18 }; 19. for (var i = 0; i < data.length; i++) { 20. markerLatLng = {lat: data[i]['lat'], lng: data[i]['lng']}; 21. marker[i] = new google.maps.Marker({ //マーカーの追加 22. position: markerLatLng,//マーカーを立てる位置を指定 23. map: map//マーカーをたてる地図を指定 24. }); 25. } 26 });//jsonの閉じ 27.} 【JSON】 [ { "name": "名古屋駅", "lat": 35.170897, "lng": 136.881558 }, { "name": "大名古屋ビルヂング", "lat": 35.172311, "lng": 136.884568 }, { "name": "国際センター駅", "lat": 35.172038, "lng": 136.887701 } ]

  • googlemapsとjavascriptの勉強のため、google地

    googlemapsとjavascriptの勉強のため、google地図を表示させてマウスで地図をクリックすると、クリック位置にマーカーを表示するだけのプログラムを作っています。 この際、地図の上にマウスが乗っていると、マーカーがドラッグされている状態に見えると見た目が判りやすいと思ったのですが(googlemapsのマイマップで新規マーカーを置く時にそんなことやってたと思うんですけど)、どうもその方法がわかりません。 マウスカーソルの移動イベントを取って、マウスカーソルの位置に延々とマーカーを表示し続ければそれっぽく見えるかとも思いましたが、Firefoxだとそれっぽく見えますがIEだと処理に負担がかかるのか、動作がイマイチです。 なんとか解決方法が無いものでしょうか。 参考程度ですが、↓のような物です。 <div id="maps" style="width: 500px; height: 500px"></div> ~~~~~~~~~~~~~~~~~~~~ var maps = new GMap2(document.getElementById("maps")); var ev1 = GEvent.addListener(maps,"click",function(overlay,latlng){ maps.addOverlay(new GMarker(new GLatLng(latlng.lat(),latlng.lng()),{draggable:drag})); GEvent.removeListener(ev1); GEvent.removeListener(ev2); } var ev2 = GEvent.addListener(maps, "mousemove",function(latlng){ maps.clearOverlays(); maps.addOverlay(new GMarker(latlng)); }); ちょっと漠然としていますが、よろしくお願いいたします。