• 締切済み

GoogleMapAPI - デフォルト表示したマーカーから緯度経度を取得できない

最近googleMapを利用しデータベースと連携して コミュニケーションツールを作れないかとあれこれ 本やネットで調べた知識でがんばっているのですが、 行き詰まってしまったのでどなたかお知恵をお貸し下さい。 ◇前提 ・googleMapのページアクセス時に  DBに登録済みのマーカー情報(緯度・経度・場所名称)を基に  複数のマーカーを表示する  ※DBとのデータ中継はPHPを使用。ここでは省略。 ◇問題点 ・表示された複数のマーカーのうちどれかをクリックしたとき  そのマーカーに付随するデータをフォーム上に表示したいが、  DBへの問い合わせに必要なクリックしたマーカーの緯度経度が  取得できない。 以下抜粋 ------------------------------------------------- // 登録済みマーカーをデフォルト表示 GDownloadUrl("load.php", function(doc, stat){ var load = doc.parseJSON(); for(var i=0; i<load.data.length; i++){ var point = new GLatLng(load.data[i].lat, load.data[i].lng); var marker = new GMarker(point); map.addOverlay(marker); // クリックしたマーカーに該当する情報を表示 GEvent.addListener(marker, "click", function(){ //*** ここで緯度経度を取得 **** } } }); ------------------------------------------------- http://oshiete1.goo.ne.jp/qa2559818.html 上記ページの質問に対する回答の方法も試しましたが、 エラーが出てしまい解決できませんでした。 プログラム素人な上、不慣れな分野にて行き詰まってます。 どうかお助け下さい。

みんなの回答

  • ririli
  • ベストアンサー率32% (15/46)
回答No.1

こんにちは marker.getPoint() とすればマーカーのさしてる緯度経度を取得できるはずですがどうでしょうか? あと、「ここで緯度経度を取得」の部分で、どのように試してみてだめだったか なども書いておいたほうが回答がつきやすいと思います。

mapple55
質問者

お礼

回答ありがとうございます。 すいません説明不足でした。 GEvent.addListener(marker, "click", function(){   var p = marker.getPoint(); とすると緯度経度は取得できるのですが、 ページ読み込み時のループ処理の関係で 最後のマーカーの位置情報しか掴めませんでした。 かといってforの外側では結局正常な値が取れません。 今回急いでいた為、他の場所でも質問をしていたところ 以下のような例を頂き、無事解決できました。 ----------------------------------- GDownloadUrl("load.php", function(doc, stat){   var load = doc.parseJSON();   for(var i=0; i<load.data.length; i++){     var marker = makeMarker(load.data[i].lat, load.data[i].lng);     map.addOverlay(marker);   } }); function makeMarker(lat, lng){   var point = new GLatLng(lat,lng);   var marker = new GMarker(point); // クリックしたマーカーの情報を表示   GEvent.addListener(marker, "click", function(){     var p = marker.getPoint();     GDownloadUrl( ***[p.lat]と[p.lng]で問い合わせ*** )     <-----省略-----> ----------------------------------- これである程度進められると思いますが、 まだ完成までに解決しなければならない問題はいくつもあります。 なるべく自分の力で調べてはみますが、 またこちらに質問させて頂くことになるかもしれませんので その時はご指摘頂いたことに気をつけたいと思います。 アドバイスありがとうございました。

関連するQ&A

  • 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);

  • GoogleMapでの複数マーカー表示について

    MySQLのデータベースに格納してある緯度と経度を使い、GoogleMap上に複数のマーカーを表示させるプログラムをJSPで作成したいのですが、 JSP内ではデータベースの緯度と経度をうまく取得できず、その後別のjavaで一度取得した経度と緯度をArrayListでリストに入れ、それをJSPで受け取り配列に入れる形式にしてみました。 しかし、それもうまく表示させることができませんでした。 MySQLのデータベースの緯度と経度を使ってGoogleMap上に複数マーカーを表示するにはどうすればいいのでしょうか? アバウトな質問になってしまい申しわけありません。 どうかよろしくお願いいたします!

  • GoogleMapAPIで複数のマーカーの設置

    GoogleMapAPIで複数のマーカーの設置を考えています。 DBから受け取った複数の緯度、経度を利用したいのですが、このようなことはできるでしょうか? よろしくお願いいたします。

  • 住所を経度、緯度に変換

    GoogleMap表示の過程ついて質問です。 例えば住所をDBに登録しphpで住所を経度、緯度に変換しさらにxmlを生成しjsに渡すと いう方法がありますがその際の負荷は結構掛かるものでしょうか? ※マップ上に複数の情報を表示します 当然、件数にもよるかと思いますがDBに経度、緯度も登録しておいた方がいいものか 制作過程で悩んでおります。 経験者の型がいらっしぃいましたらアドバイスをお願いいたします。

    • ベストアンサー
    • PHP
  • Googlemap apiでFFとNNでマーカーの表示が出ないのですが、どこが間違っていますか?

    Googlemap でマーカーの吹き出しに指定のHtmlを表示するように書いたつもりなのですが、IEとオペラでは意図どうりに表示されるのですがFFとNNではマーカーが表示されません。 javascriptはあまり得意ではないのでわかりやすく説明して頂けると他助かります。 //<![CDATA[ function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(43.05578, 141.353257), 15); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); kyaba =[ [141.353075, 43.053673, "ダミー", "ダミー2", "ダミー3"], [141.352919, 43.054167, "ダミー", "ダミー2", "ダミー3"] ]; for (i = 0; i < kyaba.length; i++){ point = new GPoint(kyaba[i][0], kyaba[i][1]); dada = "<p>" + kyaba[i][2] + "</p>" + "<p>" + kyaba[i][3] + "</p>" + "<p>" + kyaba[i][4] + "</p>"; createMarker(point, dada); function createMarker(point,msg){ var marker = new GMarker(point); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(msg); }); } } } } //]]> </script>

  • GoogleMapsから緯度経度をPHPに渡したい

    GoogleMapsAPIを利用して、自サイトにマーキング可能な地図を表示させたいと思っています。 具体的には・・・ 目的の位置を表示させて「登録」ボタンを押すと、moveendで取得した緯度経度のデータをフォーム(PHP)に渡し、そのフォームからコメントを添えてDBに格納する。 といった具合です。 GoogleMapsAPIはJavaScriptでの記述なので、JavaScriptで取得した緯度経度データをどのようにPHPフォームに渡せばいいのかがわかりません。 当方、PHPは若干わかりますが、JavaScriptについては全くわかりません。 以下のソースで緯度経度を取得するところまではできたのですが・・・。 GEvent.addListener(map, 'moveend', function() { var cnt = map.getCenter(); document.getElementById("cnt_x").innerHTML = cnt.lng(); document.getElementById("cnt_y").innerHTML = cnt.lat(); }); }); これから、どのようにすればPHPのフォームに渡せるのでしょうか? よろしくお願いします。

  • googleMapでアイコン変更すると情報ウィンドウが開かない

    お世話になります。 タイトルのとおりでマーカークリックで情報ウィンドウが表示される作りなんですが、オリジナルのアイコンに変更するとエラーで開かなくなってしまいます。 以下のプログラムで何か問題があるのでしょうか。 わかる方がいらっしゃいましたら教えて下さい。お願いします。 var map function startUp(){ map = new GMap2(document.getElementById("map")); // DBに登録した位置データを元にマーカー作成 GDownloadUrl("load.php", function(doc, stat){ eval("load=" + doc); for(var i=0; i<load.data.length; i++){ var icon = new GIcon(); // データ区分ごとにマーカーを変える switch(load.data[i].kbn){ case "0": icon.image = "img/blue.gif"; break; case "1": icon.image = "img/green.gif"; break; case "2": icon.image = "img/red.gif"; break; default: } icon.iconSize = new GSize(20,34); icon.shadow = "http://www.google.com/mapfiles/shadow50.png"; icon.shadowSize = new GSize(37,34); icon.iconAnchor = new GPoint(8,34); var mk = makeMarker(load.data[i], icon); map.addOverlay(mk); } }); } function makeMarker(data, icon){ var point = new GLatLng(data.lat, data.lng); var marker = new GMarker(point, icon); GEvent.addListener(marker, "click", function(){ marker.openInfoWindowHtml("表示テスト"); } return marker; }

  • google mapの地図上の緯度、経度を知ることは・・

    google map上で任意の場所の緯度、経度を知ることはできますか? また、それを知ることができたとして、その値をgooglemapに渡して地図を表示させることができますか? やりたいことは、住所がまだ暫定処置になっているところは住所指定でgooglemapで引き出せない場合や、引き出せても少しずれている場合があるため緯度、経度を地図から読み出せれば上述のことが可能になるのかなと考えました。宜しくお願いします。

  • googlemapapi複数マーカー10個以上表示

    初心者です。。 見よう見まねで何とか下記まではできました。 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(address, html) { var geocoder = new GClientGeocoder(); geocoder.getLatLng(address, function(point) { var marker = new GMarker(point); //マーカー生成 GEvent.addListener(marker,"mouseover",function(){marker.openInfoWindowHtml(html);});//マーカーにマウスが当たると情報ウィンドウを表示する map.addOverlay(marker); //マーカーをオーバレイ表示する }); } //マーカー追加 addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); addMarker("住所",'<p>html</p>'); } } 10個以上あるとマップ上に表示されないようです。。。 最終的に100件200件になると思うので、 すべて表示させたいのですが・・・ 何か方法はないでしょうか。。 具体的に教えていただけると助かります。。

  • googleMapでアイコン変更すると情報ウィンドウが開かない

    お世話になります。 (javascriptカテゴリで同じ質問を出しましたが回答が得られなかったのでこちらへも書きました) タイトルのとおりでマーカークリックで情報ウィンドウが表示される作りなんですが、オリジナルのアイコンに変更するとエラーで開かなくなってしまいます。 以下のプログラムで何か問題があるのでしょうか。 わかる方がいらっしゃいましたら教えて下さい。お願いします。 var map function startUp(){ map = new GMap2(document.getElementById("map")); // DBに登録した位置データを元にマーカー作成 GDownloadUrl("load.php", function(doc, stat){ eval("load=" + doc); for(var i=0; i<load.data.length; i++){ var icon = new GIcon(); // データ区分ごとにマーカーを変える switch(load.data[i].kbn){ case "0": icon.image = "img/blue.gif"; break; case "1": icon.image = "img/green.gif"; break; case "2": icon.image = "img/red.gif"; break; default: } icon.iconSize = new GSize(20,34); icon.shadow = "​http://www.google.com/mapfiles/shadow50.png";​ icon.shadowSize = new GSize(37,34); icon.iconAnchor = new GPoint(8,34); var mk = makeMarker(load.data[i], icon); map.addOverlay(mk); } }); } function makeMarker(data, icon){ var point = new GLatLng(data.lat, data.lng); var marker = new GMarker(point, icon); GEvent.addListener(marker, "click", function(){ marker.openInfoWindowHtml("表示テスト"); } return marker; }

専門家に質問してみよう