- 締切済み
グーグルマップのマーカー
設置したgooglemaps上に標準で呼び出されるマーカーが存在するかしないかの判別はどうすればよいですか? それがない時はマーカーを描画して、既にある時はマーカー描画の追加できなくしたいのです。 あまりうまく説明できませんが、どうかお知恵をお貸し下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- simarisu77
- ベストアンサー率0% (0/4)
スミマセン。No2です。 ウソ書きました。 × window.markerAmount = !!window.markerAmount ? 1 : (window.markerAmount + 1); ○ window.markerAmount = !window.markerAmount ? 1 : (window.markerAmount + 1); window.markerAmount が未定義の時、!window.markerAmount は true ですので。。。 もし、? とか : が登場する式を見たことがなければ、「三項演算子 JavaScript」でググって見て下さいね。
- simarisu77
- ベストアンサー率0% (0/4)
マーカーの数は、、、取れるには取れるのですが、 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を挿入する事自体は「任意の操作」ですので、 あまり良い手段とは言えないです。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
マーカーをつけるかどうかは自分の作ったプログラムで行うわけですから、 マーカーをつけるごとにマーカーの数をグローバル変数か何かに保持しておけば、マーカーの数は確認出来ると思いますが? > 標準で呼び出されるマーカー 自分でつける以外に、勝手につけられる事ってあるんですかね。 広告とか何かかしら。 そういうマーカーがあるなら私にはわかりません。
補足
うまく説明できずすいません。 var mymarker = new GMarker(latlng); map.addOverlay(mymarker); です。 これがマップ上に描画されているかいないかの判定です。
お礼
参考になりました。 ありがとうございました。