マーカーへclickイベントを送れますか?

48 views
Skip to first unread message

Satoshi.F

unread,
Feb 19, 2007, 4:54:23 AM2/19/07
to Google-Maps-API-Japan
皆様、はじめまして。初投稿になります。よろしくお願いします。

下記のように設定したマーカがあります。

var marker = new Array(); /*マーカー情報保持 */

for (var id=0; id<5; id++){
marker[ id] = new GMarker(new GLatLng(lat[ id],lng[ id]));
GEvent.addListener(marker[ id], "click", function() {
marker[ id].openInfoWindowHtml('marker : '+ id);
}
}

マーカーの情報は持ち回っています。
この状態であるマーカーをマップセンターに持ってきたときに、clickイベントに設定されているinfoWindowを表示させたいです。

function setCenter(id){
map.panTo(marker[id].getPoint());
/* ここでマーカーにclickイベントを送ってinfoWindowを表示させる */
}

このようなことは可能なのでしょうか?

Masashi.K

unread,
Feb 19, 2007, 10:24:57 AM2/19/07
to Google-Maps-API-Japan
> Satoshi.Fさん

はじめまして。Masashi.Kといいます。
マーカーに情報を持たせることは可能ですよ。

↓この辺とか参考になると思います。
http://googlemaps.googlermania.com/map_example_12.html

Satoshi.F

unread,
Feb 19, 2007, 8:59:24 PM2/19/07
to Google-Maps-API-Japan
> Masashi.Kさん

はじめまして。よろしくお願いします。
ご回答ありがとうございました。

clickイベントには情報を持たせています。
このclickイベントをなんとかJavascriptからキックできないかと・・

http://googlemaps.googlermania.com/map_example_5.html

に近いものがあるのですが、地図外のリンクをクリックすると、
<a href="javascript:setCenter(1)">1の施設を表示</a>

function setCenter(id){
map.panTo(marker[id].getPoint());
}

を呼んで当該施設をセンターに持ってきます。

この時に、センターにもっていくと同時にinfoWIndowを表示させたいのです。

上記Exsample-5の例では、
マーカー作成時に、
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(txt);
});
とまず、クリックイベントに情報を保持した上で、
さらに、地図外リンクから呼び出される関数に
marker_list[index].openInfoWindowHtml(txt_list[index]);
と、その都度表示用infoWindowをセットしています。

この方法以外に、マーカーのclickイベント自体をキックして表示させることができるのでしょうか?

やっぱり、その都度openInfoWindowHtml()を呼び出すしかないんでしょうか?


Message has been deleted

Masashi.K

unread,
Feb 20, 2007, 12:41:29 AM2/20/07
to Google-Maps-API-Japan
> Satoshi.Fさん


Google Mapsで擬似イベントは無理っぽいです。
あと(久々に)リファレンスを見てみたのですが、markerに関連付いている
infoWIndowを直接呼び出す方法はないようです。
(あるかも知れませんが、私にはわかりませんでした)

なので、ちょっと工夫して、それに近いモノ(ほぼご希望のものだと思います)を作ってみました。
http://googlemaps.googlermania.com/map_example_13.html

マーカーに保持させた無名関数を外部から呼び出すことはできないので
関数を定義して、マーカーをクリックしたら表示、というようにしてあります。

参考にしてみてください

Satoshi.F

unread,
Feb 20, 2007, 3:07:39 AM2/20/07
to Google-Maps-API-Japan
> "Masashi.K" さん

> Google Mapsで擬似イベントは無理っぽいです。
> markerに関連付いているinfoWIndowを直接呼び出す方法はないようです。
やはりないですか・・
すみません、お手数おかけして申し訳ありませんでした。

> http://googlemaps.googlermania.com/map_example_13.html

のように、infoWindowの部分は関数にして、その関数を使い回すことにします。

ありがとうございました。

もうすぐ、今作っている物のベータ版が完成しますので、そのときはまたアナウンスさせていただいて、
いろいろご意見をいただきたいと思います。

本当にありがとうござました。

hiroaki

unread,
Feb 20, 2007, 11:02:56 AM2/20/07
to Google-Maps-API-Japan
こんばんは。
オブジェクトにセットしたイベントは任意によびだせます。たとえばこのように:

GEvent.trigger( marker, 'click' );

詳しくはクラスリファレンスの GEvent を調べてみてください。 trigger メソッドがそれです。
http://www.google.com/apis/maps/documentation/reference.html#GEvent

あと余談ですけれども、 InfoWindow を開くと、そのフキダシが地図領域内に収まるように座標系が動くことがあるので、中心位置は保証されな
いでしょう。


On 2月20日, 午前10:59, "Satoshi.F" <sato...@fromone.jp> wrote:
> > Masashi.Kさん
>
> clickイベントには情報を持たせています。
> このclickイベントをなんとかJavascriptからキックできないかと・・
>
> http://googlemaps.googlermania.com/map_example_5.html


>
>
> <a href="javascript:setCenter(1)">1の施設を表示</a>
>
> function setCenter(id){
> map.panTo(marker[id].getPoint());}
>

> この時に、センターにもっていくと同時にinfoWIndowを表示させたいのです。
(snip)

Message has been deleted

Satoshi.F

unread,
Feb 20, 2007, 6:36:04 PM2/20/07
to Google-Maps-API-Japan
> hiroki様
おはようございます。

> GEvent.trigger( marker, 'click' );
これです!!
有り難うございます。これでソースがすっきりしました。
infoWindowの中身もprototype.jsのAjax.Requestで呼び寄せていたので、ぐちゃぐちゃしていたのですが
きれ~いになりました。

> 詳しくはクラスリファレンスの GEvent を調べてみてください。 trigger メソッドがそれです。

たいがい読み込んだつもりだったのに...
もう一度再読します..

ありがとうございました。

Masashi.K

unread,
Feb 20, 2007, 8:41:38 PM2/20/07
to Google-Maps-API-Japan
> hirokiさん

ありがとうございます。
そんな便利なものがあったのですか。
私も使ってみようと思います。
(う~む、私ももう一回見直してみますかな・・・。)

また何かあったら教えてください。
それでは失礼します。

Reply all
Reply to author
Forward
0 new messages