下記のように設定したマーカがあります。
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といいます。
マーカーに情報を持たせることは可能ですよ。
↓この辺とか参考になると思います。
http://googlemaps.googlermania.com/map_example_12.html
はじめまして。よろしくお願いします。
ご回答ありがとうございました。
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()を呼び出すしかないんでしょうか?
Google Mapsで擬似イベントは無理っぽいです。
あと(久々に)リファレンスを見てみたのですが、markerに関連付いている
infoWIndowを直接呼び出す方法はないようです。
(あるかも知れませんが、私にはわかりませんでした)
なので、ちょっと工夫して、それに近いモノ(ほぼご希望のものだと思います)を作ってみました。
http://googlemaps.googlermania.com/map_example_13.html
マーカーに保持させた無名関数を外部から呼び出すことはできないので
関数を定義して、マーカーをクリックしたら表示、というようにしてあります。
参考にしてみてください
> Google Mapsで擬似イベントは無理っぽいです。
> markerに関連付いているinfoWIndowを直接呼び出す方法はないようです。
やはりないですか・・
すみません、お手数おかけして申し訳ありませんでした。
> http://googlemaps.googlermania.com/map_example_13.html
のように、infoWindowの部分は関数にして、その関数を使い回すことにします。
ありがとうございました。
もうすぐ、今作っている物のベータ版が完成しますので、そのときはまたアナウンスさせていただいて、
いろいろご意見をいただきたいと思います。
本当にありがとうござました。
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)
> GEvent.trigger( marker, 'click' );
これです!!
有り難うございます。これでソースがすっきりしました。
infoWindowの中身もprototype.jsのAjax.Requestで呼び寄せていたので、ぐちゃぐちゃしていたのですが
きれ~いになりました。
> 詳しくはクラスリファレンスの GEvent を調べてみてください。 trigger メソッドがそれです。
たいがい読み込んだつもりだったのに...
もう一度再読します..
ありがとうございました。
ありがとうございます。
そんな便利なものがあったのですか。
私も使ってみようと思います。
(う~む、私ももう一回見直してみますかな・・・。)
また何かあったら教えてください。
それでは失礼します。