5

最近、Google マップに関する私の問題のいくつかを解決するのを手伝ってくれました。ありがとうございます。

これでほぼ完了です - 1 つだけ問題が残っています。地図上に最初のマーカーを配置すると、最も近い通りにスナップします (これで問題ありません!) が、最初のマーカーを別の場所にドラッグすると、方向が突然めちゃくちゃになります。そして、マーカーはミックスされます。

http://dev.korebogen.dk/gmap/で例を見ることができます

最初のマーカーを移動できるようにする必要があります (まだスナップします)。2 番目のマーカーを配置すると、方向が最初に読み込まれます。しかし、最初のマーカーを再びスナップさせるには、方向をロードする必要があります。

解決策をお持ちの方がいらっしゃることを願っています。前もって感謝します。

4

2 に答える 2

5

Blackpool Community Church Javascript チームには、まさにこれを示す優れた例があります( 4 番目の例への直接リンク)。他の例もチェックしてください。

(免責事項: 私は彼らと提携していませんが、彼らの例から GMaps について多くのことを学びました)

編集:マップイベントは次のように発生すると思われます(疑似コード、実際のイベント名などについては、GMapsのドキュメントを確認してください):

  • マップ クリック: マウスダウン、マウスアップ、クリック:{赤いマーカーを設定}
  • 赤いマーカーをドラッグ: mousedown, dragstart{red marker}, mouseup, click:{set marker b} (mousedown+mouseup), dragend
  • 両方のマーカーが設定されていますか? はい、経路を検索します

私が提案したいこと: red-marker と marker-A のドラッグスタート関数で、「マーカーをドラッグする」というフラグを設定し、ドラッグエンド関数でそれをリセットします。マーカーの設定 B 関数では、現在何かをドラッグしていない (フラグが設定されていない) 場合にのみマーカーを設定します。

于 2009-04-30T07:48:57.263 に答える
2

以前に提供したコードは、最初の 2 回のクリックをリッスンし、それぞれにマーカーを追加しました。問題は、最初のマーカーをドラッグすると、「クリック」イベントが再度呼び出され、同じ場所に別のマーカーが追加されることです。

さいわい、クリック イベントによって、オーバーレイがクリックされたかどうかがわかります。したがって、overlay が null の場合にのみ、新しいマーカーを追加するコードを実行してください。overlay はブール値ではないことに注意してください。

var listener = GEvent.addListener(map, "click", function(overlay, latlng) {
  if (overlay == null) {
    // code to add new marker
  }
});
于 2009-04-30T17:32:51.697 に答える