• 締切済み

グーグルマップのマーカー

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

みんなの回答

回答No.3

スミマセン。No2です。 ウソ書きました。 × window.markerAmount = !!window.markerAmount ? 1 : (window.markerAmount + 1); ○ window.markerAmount = !window.markerAmount ? 1 : (window.markerAmount + 1); window.markerAmount が未定義の時、!window.markerAmount は true ですので。。。 もし、? とか : が登場する式を見たことがなければ、「三項演算子 JavaScript」でググって見て下さいね。

gooID3
質問者

お礼

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

回答No.2

マーカーの数は、、、取れるには取れるのですが、 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を挿入する事自体は「任意の操作」ですので、 あまり良い手段とは言えないです。

回答No.1

マーカーをつけるかどうかは自分の作ったプログラムで行うわけですから、 マーカーをつけるごとにマーカーの数をグローバル変数か何かに保持しておけば、マーカーの数は確認出来ると思いますが? > 標準で呼び出されるマーカー 自分でつける以外に、勝手につけられる事ってあるんですかね。 広告とか何かかしら。 そういうマーカーがあるなら私にはわかりません。

gooID3
質問者

補足

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

関連するQ&A