プロが教える店舗&オフィスのセキュリティ対策術

最近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
上記ページの質問に対する回答の方法も試しましたが、
エラーが出てしまい解決できませんでした。
プログラム素人な上、不慣れな分野にて行き詰まってます。
どうかお助け下さい。

A 回答 (1件)

こんにちは



marker.getPoint()
とすればマーカーのさしてる緯度経度を取得できるはずですがどうでしょうか?

あと、「ここで緯度経度を取得」の部分で、どのように試してみてだめだったか
なども書いておいたほうが回答がつきやすいと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

すいません説明不足でした。
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]で問い合わせ*** )
    <-----省略----->
-----------------------------------

これである程度進められると思いますが、
まだ完成までに解決しなければならない問題はいくつもあります。
なるべく自分の力で調べてはみますが、
またこちらに質問させて頂くことになるかもしれませんので
その時はご指摘頂いたことに気をつけたいと思います。
アドバイスありがとうございました。

お礼日時:2007/02/07 00:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!