DirectionsServiceを使用してルート表示させるスクリプトは色々なサイトで紹介されていますが、
目的地を変更する場合、マウスのドラッグで目的地を変更する感じで、
【 destination 】を動的に変更できるスクリプトってないでしょうか。
今は再実行しているのですが、やっぱり再表示されるまで時間もかかってしまいますし、
destinationを動的に変更できないかと検索してるのですがさっぱりわかりません。
今のままでもいいのですが、マウスドラッグのような切り替わり方した方がかっこいいなと思うので、
可能であれば変更したいと思います。無理なのでしょうか。。
<サンプル>
---------------------------------------------------
<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false" …
<script type="text/javascript">
function navi(){
document.getElementById("directionsPanel").innerHTML="";
var startplace = document.getElementById("startplace").value;
var targetplace = document.getElementById("targetplace").value;
var myOptions = {
zoom: 17,
center: startplace,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var rendererOptions = {
draggable: true,
preserveViewport: true
};
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
var directionsService = new google.maps.DirectionsService();
var request = {
origin: startplace,
destination: targetplace,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.DirectionsUnitSystem.METRIC,
optimizeWaypoints: true,
avoidHighways: false,
avoidTolls: false
};
directionsService.route(request, function(response, status){
if (status == google.maps.DirectionsStatus.OK){
directionsDisplay.setDirections(response);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}
});
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
directionsDisplay.setMap(map);
}
</script>
</head>
<body>
<form>
出発地:<input type="text" id="startplace" />
目的地:<input type="text" id="targetplace" />
<input type="button" value="ルート検索" onclick="navi();" />
</form>
<div id="map_canvas" style="width:70%; height:480px; float:left;"></div>
<div id="directionsPanel" style="width:30%; height:480px; float:left;"></div>
</body>
</html>
---------------------------------------------------
同様に【 origin 】も変更可能なら簡易のナビとしても使えるんじゃないかと思っています。。
No.2ベストアンサー
- 回答日時:
ANo1です。
apiに用意されているRendererのアイコンをそのまま使えばドラッグ&ドロップに対応していましたね。
忘れてました。(^_^;)
ご質問の、mapが再表示される理由は、セレクトを変えた時のイベント処理にあると思われます。
その処理の中では、
1)マップの定義
2)ルートの検索
3)画面への表示
を行うようになっていますので、セレクトを変えるたびに1)のマップの(再)定義が行われ地図が描き直されることになります。
回避したければ、拡大・縮小の処理と同じように、2)、3)の処理だけを行うようにすればよいでしょう。
ただし、表示する内容が新しい地図(まだ読み込まれていない部分)であると、表示のために読み込みますので、再表示と似たようなことは起こります。
(地図をドラッグすると新しい部分が読み込まれるのと同じ状態です)
また、1)の処理を事前に行っておく必要があるのは、もちろんです。
(マップの定義は一度行えばOKです)
rendererOptionsのpreserveViewportについては、以下のURLに説明があります。
trueに設定すると地図の描き直しは行われないようです。
(デフォルトのままでよければ、わざわざ設定しなくても良いはず)
https://developers.google.com/maps/documentation …
map apiに関しては上記サイトに詳細な説明がありますので、わからないことはそこで調べるのが一番です。(それ以上の情報は、通常では得られませんので)
fujillin様
ご回答ありがとうございます。
1)マップの定義 が再描画の原因だったんですね。
言われてみれば当然ですね。。
おかげさまで望んでいたUIを提供できます。
ありがとうございました。
No.1
- 回答日時:
こんにちは
>目的地を変更する場合、マウスのドラッグで目的地を変更する感じで、~~
出発点や目的地にマーカー表示をして、それをドラッグ可能にしておくといった感じでしょうか?
ご提示のソースをコピペで実行してみましたが、ルート検索の結果が右欄に表示されるもののマップは表示されないようなので、どのようなイメージでいらっしゃるのかいまいちつかめませんでした。
>やっぱり再表示されるまで時間もかかってしまいますし、~
入力操作に時間がかかるという意味なら、UIの向上で少しは短縮可能かも知れませんが、計算や表示に時間がかかるという意味でしたら、必ずしも短縮になるとは限らないと思います。
なぜなら、その部分(=ルートの再検索と表示)はほぼ同じ処理のまま変わらないでしょうから。
かなり以前ですが、ルート検索の質問にドラッグ可能なものを回答した記憶があります。
検索以外の計算に関する内容が主だったので、質問者様のご質問以外に余分な内容も含まれていますが、『ドラッグ&ドロップでルートを再検索する』部分に関しては同じなので、多少は参考になるのではないかと思います。
以下の過去の質問をご覧になってみてください。
※ ここの表示ではURLが省略表示で自動リンクになってしまいますので、コピーで試してみる際にはご注意ください。
http://oshiete.goo.ne.jp/qa/Q8159078.html
https://oshiete.goo.ne.jp/qa/Q8800586.html
fujillin様
ご回答いただきありがとうございます。
また、ソース不備でお手数をおかけしました。
質問補足でテストページをご案内させていただきます。
また、質問内容があいまいな部分がありましたが、
今回行いたいことはユーザにドラッグ&ドロップをさせたいのではなく、
目的地を再設定できるコマンドがあるのか、あるならその方法を知りたいです。
(なかなか言葉だけで伝えるのって難しいですねぇ。。汗)
テストページにやりたい内容も改めて書いていますのでご確認いただけると幸いです。
http://fmsnet.sakura.ne.jp/test/index.html
(伝わるといいのですが。。汗)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Click回数を数え、規定された回...
-
<a>タグのテキストを取得
-
javascript 特定のタグのidの存...
-
配列の大括弧と丸括弧はどう違う?
-
onchangeイベントを使ってspan...
-
任意の座標をクリックさせるには
-
javascript の 命令文の記述で...
-
javascript初心者です。
-
【Tabキー】特定の範囲内だけで...
-
WordPressのコンタクトフォーム...
-
モーダルダイアログウィンドウ...
-
onclickを使わずにイベント処理...
-
ActiveXobjectが作成できない
-
C#OpenCv V4にのエラーに関する...
-
同じIDで定義した要素の配列を...
-
JavaScript window.openで開く...
-
google apps scriptの終了のさせ方
-
FireFoxのjavascriptで自動でキ...
-
Boolean型配列中のTrueの有無を...
-
Vb.netのグローバル変数の宣言...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
[初心者]javascriptのfor文でな...
-
ActiveXobjectが作成できない
-
任意の座標をクリックさせるには
-
appendChildがieだとできない??
-
onchangeイベントを使ってspan...
-
【Tabキー】特定の範囲内だけで...
-
モーダルダイアログウィンドウ...
-
javascript 特定のタグのidの存...
-
日本語入力の禁止
-
innerHTML実行後のイベント
-
HTML:Tableタグに対し、JavaScr...
-
onclickを使わずにイベント処理...
-
アンカークリックのイベントを...
-
javascriptでスロットゲームを...
-
画像上のクリックした場所が分...
-
javascriptでCSVを呼出しvlookup
-
javascriptで編集可能不可能の...
-
Click回数を数え、規定された回...
-
子画面からwindow.openを開いた...
おすすめ情報
ソースの一部不備で実行できない状態でした。
テストページ作成しております。
以下からご確認いただければ幸いです。
http://fmsnet.sakura.ne.jp/test/index.html