2

ここではJavaScriptの根本的な法則がありませんが、ドラッグされた後のGoogleマップマーカーの位置に関する質問があります。ドラッグした後のGoogleマップマーカーの位置

マーカーにマーカーを追加し、追加したマーカーを変数に割り当てるか、正確には、マーカーのdiv要素のdataにjQueryを使用してjQuery.data()を使用しています。

ここで、地図上でマーカーをドラッグすると問題が発生します。私はdragendイベントを理解し、それを放つ/キャプチャする方法と、ドラッグ後の新しいlatlngポジションを含むデータです。つまり、私はJavaScriptのオブジェクトが参照渡しされていることを理解していたので、要素に格納されているマーカー参照の位置が新しい位置を自動的に反映するように更新されないのはなぜですか?

私はそれが次のいずれかの可能性が推測:要素のdataに渡さ

  1. オブジェクトを参照、したがってjQueryの問題によって渡されない、重複しています。
  2. Googleマップでは、変数またはdataノードに保存されているマーカの位置が自動的に更新されないため、Googleマップの問題が自動的に更新されません。
  3. ポジションを更新するには、自分自身でdragendイベントを物理的に起動する必要があります(奇妙な解決策のように聞こえます)。

私は基本的にこれをどこかで問題としてログに記録する必要があるかどうか、あるいは私がちょうど馬鹿にしているかどうかを確認するためにこれを照会しています。他の強化されたGoogle Mappersからの入力は本当に私をここで助けます。

事前に乾杯。

+0

は、以下のコードを見てみましょう。それは確かに位置を更新する、私はJSコンソールに再出力することを忘れてしまった。ダー。 – designermonkey

+0

私はあなたが質問を削除することができると信じています! – TMS

+1

余りにも遅い今、私のイディオシは永遠に残るでしょう。 – designermonkey

答えて

6

私はあなたの問題を解決したことが分かりましたが、 多分、この質問を読んでいる人にとっては役に立ちます。

Googleマップでは、ドラッグ後に新しいLatLng-Objectを使用してマーカーの位置を上書きしています。変数のマーカの位置(LatLng-Object)を変数に格納すると、変数は以前に定義されたLatLng-Objectへの参照を保持します。ドラッグした後、マーカーの位置は更新されますが、LatLng-Object自体は更新されません。私は馬鹿のように、私は希望を見ずに質問を撤回することができれば

var ll = new google.maps.LatLng(52, 0.054); 
var m = new google.maps.Marker({ 
    position: ll, 
    draggable: true, 
    title: 'hello world'  
}); 

google.maps.event.addListener(m, 'dragend', function(ev){ 
    alert(ll.lat() + ' ' + ll.lng()); // always the same LatLng-Object... 
    alert(m.getPosition()); // new LatLng-Object after dragend-event... 
}); 
+0

はあなたがAdrianに返答することを知っていたはずですo) – designermonkey

関連する問題