この人頭いいなと思ったエピソード

設置したgooglemaps上に標準で呼び出されるマーカーが存在するかしないかの判別はどうすればよいですか?
それがない時はマーカーを描画して、既にある時はマーカー描画の追加できなくしたいのです。
あまりうまく説明できませんが、どうかお知恵をお貸し下さい。

A 回答 (3件)

マーカーの数は、、、取れるには取れるのですが、


A No.1でおっしゃってるように、グローバル変数で管理するのが一番無難です。

単純には、

function addMarker(){
var mymarker = new GMarker(latlng);
map.addOverlay(mymarker);
window.markerAmount = !!window.markerAmount ? 1 : (window.markerAmount + 1);
}

function hasMarked(){
return !!window.markerAmount;
}

このaddMarkerを経由してマーカーを置くようにすれば、
hasMarkedという関数で、既にマーカーが存在するかどうかが分かります。

どうしてもこのような記述が不都合であるならば、
次のようにして直接マーカーの数を数えることもできます。

function getMarkerAmount(){
return map.getPane(G_MAP_MARKER_PANE).childNodes.length;
}

通常の操作の元ではこの方法で問題なくアクティブなマーカー数を取得できますが、
G_MAP_MARKER_PANEというレイヤにNodeを挿入する事自体は「任意の操作」ですので、
あまり良い手段とは言えないです。
    • good
    • 0

スミマセン。

No2です。
ウソ書きました。

× window.markerAmount = !!window.markerAmount ? 1 : (window.markerAmount + 1);
○ window.markerAmount = !window.markerAmount ? 1 : (window.markerAmount + 1);

window.markerAmount が未定義の時、!window.markerAmount は true ですので。。。
もし、? とか : が登場する式を見たことがなければ、「三項演算子 JavaScript」でググって見て下さいね。
    • good
    • 0
この回答へのお礼

参考になりました。
ありがとうございました。

お礼日時:2007/03/19 08:49

マーカーをつけるかどうかは自分の作ったプログラムで行うわけですから、


マーカーをつけるごとにマーカーの数をグローバル変数か何かに保持しておけば、マーカーの数は確認出来ると思いますが?

> 標準で呼び出されるマーカー
自分でつける以外に、勝手につけられる事ってあるんですかね。
広告とか何かかしら。
そういうマーカーがあるなら私にはわかりません。

この回答への補足

うまく説明できずすいません。
var mymarker = new GMarker(latlng);
map.addOverlay(mymarker);
です。
これがマップ上に描画されているかいないかの判定です。

補足日時:2007/03/15 21:47
    • good
    • 0

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