ウェブアプリケーションでマーカーを作成し、それらのマーカーを使用してGoogleのルートを作成することができます。しかし、私はユーザーにも経路を変更することができるようにしたいと私はGoogleマップapi v3でdraggable方向を見つけた。変更されたルートをデータベースに保存して、その情報で正確な経路を再作成する方法はありますか?Googleマップドラッグ可能な指示の保存
答えて
私は、次のすべて真実であると仮定するつもりです:
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 8,
center: new google.maps.LatLng(/* center of map */),
mapTypeId: google.maps.MapTypeId.ROADMAP
}),
directions = new google.maps.DirectionsService(),
displayer = new google.maps.DirectionsRenderer({
draggable: true
});
displayer.setMap(map);
directions.route({
origin: new google.maps.LatLng(/* start point */),
destination: new google.maps.LatLng(/* end point */),
travelMode: google.maps.DirectionsTravelMode.DRIVING
}, function (result) {
displayer.setDirections(result);
});
は基本的に、これは単なるスタート - およびエンドポイントがすでに選択されていると、デフォルトルートがすでに描かれていることを前提としています。 (注:DirectionsRenderer
はdraggable: true
で初期化されています。)
ユーザーがルートを変更し、アプリケーションがdirections_changed
イベントを発生させます。私たちは、そのようにそれを追跡することができます。他に
google.maps.event.addListener(displayer, 'directions_changed', some_method);
何か変更はルートときもが起こる:新しいwaypoint
が作成されます。ここでは、すべてのウェイポイントで取得する方法は次のとおりです。
var some_method = function() {
var waypoints = displayer.directions.route[0].legs[0].via_waypoint;
};
変数waypoints
ルートが目的地に向かう途中で作る停止を記述するオブジェクトの配列です。 (より多くの仮定がなされていることを注意:route[0]
、legs[0]
、等を使用している)
各waypoint
オブジェクトが(何らかの理由で、それぞれlocation.wa
とlocation.ya
で入手可能)緯度と経度を含む、location
性質を有しています。したがって、ユーザーがルートを変更するたびに、現在のウェイポイントのすべてのラットおよびロングを回転(および格納)するようにアプリケーションに指示できます。いったんそれらを持っていれば、それらを保存する方法を決めることができます(AJAXをデータベースに保存するサーバー側のページにlocalStorage
など)
Then!これは、ユーザーが選んだ新しいルートを維持する必要があります
directions.route({
origin: new google.maps.LatLng(/* start point */),
destination: new google.maps.LatLng(/* end point */),
travelMode: google.maps.DirectionsTravelMode.DRIVING,
waypoints: [
{ location: new google.maps.LatLng(/* lat/lng go here */) } // repeat this as necessary
]
}, function (result) {
displayer.setDirections(result);
});
:
あなたがこのページを読み込む次回は、ストレージからそれらのウェイポイントをつかむなどのようなルートを初期化することができます。最終的な注記:をhowのように、どのユーザーがどのルートを希望しているかをどのように知っているかなど、この回答の外に残しました。ゴッドスピード。
ありがとう!それを試してみます – qkp
@qkp答えが受け入れられるように十分に感謝...? – sdleihssirhc
私はそれを試みましたが、指示サービスの呼び出しをループするときにエラーが発生しました!最高のwaypoints量が10の停止であり、カスタムルートが道をより多く停止するので、なぜ私がそれをループすることにしたかということをapiに引き起こす。私はコード化されたポリラインとしてポリライン全体を保存するだけで回避することで問題を解決しました。 – qkp
これはsdleihssirhcの答えと今のところの間で変更されたものかもしれませんが、私は上記の解決策を試しましたが、displayer.directions.route [0] で定義されていませんでした。
属性がroutes
に変更されていることがわかりました。
var waypoints = displayer.directions.routes[0].legs[0].via_waypoint;
うまくいけば、この作業を取得しようとしている人のためにいくつかの時間とフラストレーションを保存します。私のために働き、以下の行を使用しました。
- 1. Googleマップドラッグ可能なポリライン
- 2. jqueryソート可能な保存位置
- 3. Google Maps Android API v2 - MarkerOptionsドラッグ可能で表示可能なメソッド
- 4. ドラッグ可能なマーカーからマーカーの新しい位置を保存 - GoogleマップV3
- 5. Express.js + Google Chrome拡張機能:セッションの保存は可能ですか?
- 6. ドラッグ可能、サイズ変更可能、HTML、状態保存
- 7. C#のための保存可能な "プロジェクト"の作成
- 8. JQUERYドラッグ可能/ドロップ可能イメージ:ユーザーの保存機能の作成方法
- 9. ドラッグ可能なdivの位置をレールに保存する
- 10. ExcelにAPEXの更新可能なレポート値を保存する
- 11. Flex:CFCで編集可能なデータグリッドを保存
- 12. C#で検索可能なデータを保存する方法
- 13. 更新可能な文字列をfirefox addonに保存する
- 14. C関数に保存可能なベクトルを渡す
- 15. データベースに編集可能な内容を保存する
- 16. 画像がデータベースに保存されたクリック可能なスライドショー
- 17. シリアライズ可能なオブジェクトリストをsharedPreferencesに保存する
- 18. これは実行可能なサブディレクトリファイル保存システムですか?
- 19. 保存可能なMVectorからIOVectorを構築する
- 20. jQuery UIソート可能なリストをPHP配列に保存
- 21. jQueryの1.7 UI 1.8、ドラッグ可能なドロップ可能とソート可能な共存
- 22. google maps APIの指示
- 23. セキュリティで保護されたダウンロード可能なファイルを保存する
- 24. Google Maps APIウェイポイントの保存
- 25. 保存機能
- 26. 大きな検索可能なテキストファイルを保存する最良の方法
- 27. Googleの可視化可能なデータ断続的な問題
- 28. Googleマップでの保存マーカーとセンターマップの表示方法
- 29. Googleマップの指示をさまざまな言語で表示
- 30. 移植可能なEclipseとGoogleプラグイン
あなたはどのバージョンを使用していますか? .1、.2、または.3? – sdleihssirhc
@sdleihssirhc APIのバージョン3 –
@ Sam:このような質問には殆ど仕様書をつけないでください。例えば、JSやユーザーがマップをクリックして作成した初期マーカーですか?方向はどうですか?正確に方向がDBに格納されるべきか?すぐに?または各ドラッグの後にポップアップを表示して保存...を確認する必要がありますか?私はあなたが[pastebin](http://pastebin.com/)にこれまで行ってきたことを貼り付けることをお勧めします – ifaour