[解決済み] Googleマーカーから緯度・経度を取得する
質問
Google Mapsの地図に、ドラッグできるマーカーを作りました。ユーザーがマーカーをドラッグしたときに、新しい緯度と経度を知る必要があるのですが、それを行うための最良の方法がわかりません。
新しい座標を取得するにはどうしたらよいでしょうか。
どのように解決するのですか?
ここでは JSFiddleのデモ . Google Maps API V3では、ドラッグ可能なマーカーの緯度と経度を追跡するのはとても簡単です。 まずは以下のようなHTMLとCSSをベースにしてみましょう。
<div id='map_canvas'></div>
<div id="current">Nothing yet...</div>
#map_canvas{
width: 400px;
height: 300px;
}
#current{
padding-top: 25px;
}
以下は、google map を初期化する JavaScript の例です。 ドラッグしたいマーカーを作成し、dragable プロパティを true に設定します。 もちろん、このプロパティをウィンドウの onload イベントにアタッチしてロードする必要があることに注意してください。
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 1,
center: new google.maps.LatLng(35.137879, -82.836914),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var myMarker = new google.maps.Marker({
position: new google.maps.LatLng(47.651968, 9.478485),
draggable: true
});
ここでは、2つのイベント
dragstart
を付加し、ドラッグの開始を追跡しています。
dragend
を使って、マーカーがドラッグされなくなったときにドラッグするようにし、それを取り付ける方法は
google.maps.event.addListener
. ここで行っているのは
current
のコンテンツを設定し、ドラッグを停止したらマーカーの緯度と経度を設定することです。 Google のマウスイベントには 'latlng' というプロパティがあり、イベントが発生すると 'google.maps.LatLng' オブジェクトを返します。 つまり、ここでやっていることは、基本的には、このリスナーの識別子を使用しています。
google.maps.event.addListener
によって返されるこのリスナーの識別子を使用して、プロパティ
latLng
を取得し、ドラッグエンドの現在位置を抽出します。 ドラッグが停止したときの緯度経度を取得したら、その緯度経度を
current
div に表示します。
google.maps.event.addListener(myMarker, 'dragend', function(evt){
document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
});
google.maps.event.addListener(myMarker, 'dragstart', function(evt){
document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
});
最後に、マーカーを中央に配置して、地図上に表示します。
map.setCenter(myMarker.position);
myMarker.setMap(map);
私の回答について何か質問があれば教えてください。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] Google Maps JS API v3 - シンプルな複数マーカーの例
-
[解決済み] Google Maps APIでマウスのスクロールホイールによる拡大縮小を無効にする方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] ECMAScriptとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?