No.5ベストアンサー
- 回答日時:
ANo4です。
ちょっとだけ時間ができたので、簡単なものを作成してみましたが、10ルート以上が表示されませんね。
調べたところ、Direktionサービスの制限(10回/秒まで)に引っかかるようです。
https://developers.google.com/maps/documentation …
これを避けるには0.1秒ごとにリクエストするなどとしなければなりませんが、100ポイントでも10秒以上かかってしまうので、ウェイポイントも併用したほうが速くできそうです。
・・・ということで、作り直しました。
時間が無くなってきたので、少々いい加減ですが・・・(汗)
「0.1秒ごとのアクセス」と「ウェイポイントの利用」で若干複雑にはなっていますが、雰囲気のご参考までに。
※ 最短距離を求めるものではありませんので、データの順に経路を表示するだけです
※ インデントは全角空白にしてあります。
※ ポイントマーカをクリックすると名称と座標値が表示されます。
(function(){
//座標データ(東海道53次)
// [ 名称, 緯度, 経度, (LatLng, Marker)]
var points = [
[ '日本橋', 35.683611, 139.774444 ],
[ '品川宿', 35.621944, 139.739167 ],
[ '川崎宿', 35.535556, 139.707778 ],
[ '神奈川宿', 35.472778, 139.632278 ],
[ '程ヶ谷宿', 35.444028, 139.595556 ],
[ '戸塚宿', 35.395028, 139.529861 ],
[ '藤沢宿', 35.345667, 139.486306 ],
[ '平塚宿', 35.327278, 139.337806 ],
[ '大磯宿', 35.309, 139.315306 ],
[ '小田原宿', 35.248722, 139.161028 ],
[ '箱根宿', 35.190417, 139.026361 ],
[ '三島宿', 35.11925, 138.914472 ],
[ '沼津宿', 35.100111, 138.857417 ],
[ '原宿', 35.125528, 138.797333 ],
[ '吉原宿', 35.162778, 138.685639 ],
[ '蒲原宿', 35.119972, 138.605472 ],
[ '由比宿', 35.107611, 138.567472 ],
[ '興津宿', 35.049833, 138.519556 ],
[ '江尻宿', 35.019889, 138.480861 ],
[ '府中宿', 34.974917, 138.387639 ],
[ '鞠子宿', 34.949417, 138.342444 ],
[ '岡部宿', 34.918833, 138.282667 ],
[ '藤枝宿', 34.869806, 138.252722 ],
[ '島田宿', 34.832806, 138.175861 ],
[ '金谷宿', 34.822861, 138.129278 ],
[ '日坂宿', 34.804139, 138.075361 ],
[ '掛川宿', 34.772917, 138.015889 ],
[ '袋井宿', 34.747472, 137.923222 ],
[ '見付宿', 34.726806, 137.857028 ],
[ '浜松宿', 34.705111, 137.731917 ],
[ '舞坂宿', 34.684389, 137.608944 ],
[ '新居宿', 34.694139, 137.560778 ],
[ '白須賀宿', 34.688556, 137.500833 ]
// 以下略
];
//経路探索オブジェクト
var $directS = new google.maps.DirectionsService();
// ラインの色設定とか
var $lineOptions = {
polylineOptions: { strokeWeight: 3, strokeColor: "#04F", strokeOpacity: 0.6 },
markerOptions: { visible: false }
};
//地図オブジェクト
var $map = new google.maps.Map(document.getElementById("map"), {
mapTypeId: google.maps.MapTypeId.ROADMAP
});
//インフォウィンドウオブジェクト
var $infoW = new google.maps.InfoWindow();
//各ポイントのマーカー作成処理
var createMarker = function(pt){
var marker = new google.maps.Marker({
position: pt[3],
map: $map
});
google.maps.event.addDomListener(marker, "click", (function(p){
return function(){
$infoW.setContent(p[0] + "<br>( " + p[1] + ", " + p[2] + " )");
$infoW.setPosition(p[3]);
$infoW.open($map);
}
})(pt));
return marker;
}
//経路表示処理(1リクエスト最大10ポイント)
var route = function(){
var renderer = null, wayP = [];
var p1 = points[pointIndex];
var j, n = pointNum - pointIndex - 2;
if(n>8) n = 8;
var endIndex = pointIndex + n + 1, p2 = points[endIndex];
for(j=pointIndex+1; j<endIndex; j++) wayP.push({
location: points[j][3], stopover: true
});
pointIndex = endIndex;
var request = {
origin: p1[3],
destination: p2[3],
waypoints: wayP,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
$directS.route(request, function(response, status){
if (status == google.maps.DirectionsStatus.OK){
renderer = new google.maps.DirectionsRenderer();
renderer.setMap($map);
renderer.setOptions( $lineOptions );
renderer.setDirections( response );
}
});
if(pointIndex < pointNum - 1) setTimeout( route, 101);
}
//メイン処理
var pointIndex = 0, pointNum = points.length;
var i, p = points[0];
var mBound = new google.maps.LatLngBounds(
{ lat: p[1], lng: p[2] }, { lat: p[1]+0.05, lng: p[2]+0.05 }
);
for(i=0; i<pointNum; i++){
var p = points[i];
p[3] = new google.maps.LatLng(p[1], p[2]);
mBound = mBound.extend(p[3]);
p[4] = createMarker(p);
}
$map.fitBounds(mBound);
route();
})();
No.7
- 回答日時:
ANo6です。
>ブラウザ表示したら真っ白でした・・。
>書き方が間違っているのでしょうか
というよりも前に…そもそもの.HTML文書がおかしくない?
なぜにtitleタグの中にdiv要素が・・・??
titleは文書タイトルを示す要素で、テキストのみが許容されています。
https://developer.mozilla.org/ja/docs/Web/HTML/E …
もともと、当初のご質問文で、
>google mapのAPIだと経由地は8か所まで~~
とのことでしたので、当然そういうご質問だとばかり思っていましたが、意味が違ったのかしらん??
…ですので、サンプルはgoogle map APIの利用を前提にしています。
最初にAPIを読み込んでください。
https://developers.google.com/maps/documentation …
なお、(↑)のサイトはgoogleが提供しているリファレンスサイトですので、APIに関しての各種情報や解説が詳細に記されています。
マップ関連で何かを調べたいときは、ここで調べるのが一番と思います。
(例示したサンプルもこのリファレンスを参照しながら作成しています)
この回答へのお礼
お礼日時:2015/11/03 17:12
APIキーが必要だったんですね
取得しようとしたんですがサーバーキーとかブラウザキーとか種類があるようです
どの種類を選んで取得すればいいんでしょうか。。
No.6
- 回答日時:
ANo5です。
>このjavascriptを使っていくhtmlはどう記述したらいいんでしょうか。
マップ表示用のDIV要素等があればOKです。
例えば、
<div id='map' style='width:800px; height:800px;'></div>
とか。
念のため、実行結果の例を画像添付しておきます。
No.4
- 回答日時:
ANo3です。
>→143回の表示結果を合成表示できればいいんですけど
おっと、失礼しました。
同じ、DirectionsRendererで再表示させると書き直しちゃうみたいですね。うっかりしてました。
経路ごとに、新しいDirectionsRendererを作成してあげれば同時に表示できるはずと思います。
検索で返されたルートデータを合成して、表示する方法も考えられると思いますが、少々面倒かも。
(以下、ルート上の距離を分析しながら、経路を直接ポリラインで表示している例)
https://oshiete.goo.ne.jp/qa/8800586.html
No.3
- 回答日時:
ANo2です。
全体を巡回する最短ルートを求めることと、指定ルートの検索は全く別の処理になると思いますが、最短ルートの求め方についてのご質問ではないですよね?
座標も順序もすでに一応決まっていて、結果を確認するために一度経路を表示させてみたいってことでいいのでしょうか?
ANo2にも書きましたが、一回こっきりならなおさらだと思います。、
A点、B点の経路検索・表示の関数を作っておいて、それで143回ループするのが一番簡単ではないでしょうか。
上記の処理でよければ、ANo2であげたサンプルの、経路検索以下の12行ほどが1回分のそれに該当します。
>ここだと100か所までしかできないんです。
2回にわければ、ご提示のサイトを利用してもできるのでは?
No.2
- 回答日時:
こんにちは。
>巡回する道の駅の順番もすべて決まっているのですが、
順序が決まっているのであれば、毎回ルートを検索する必要もないように思います。
新しい道ができたりすると、ルートが変わる可能性はありますが、そのために毎回検索するというのも非効率的に思います。
事前に一度ルート検索をしておいて、そのデータを保管し、表示にはそのデータを用いれば良いのではないでしょうか?
>経由地は8か所までのようなのですが
一度の計算での経由地の制限なので、経由地を指定してルート検索するのと、1箇所ずつ始点、終点を入れ替えて検索するのとで、検索されるルートが変わることはないと思います。(サーバの負荷や計算に必要な時間が若干異なるかも)
ループで143回検索してそのルートデータを保管しておけばよさそうな気がします。
利用形態がよくわかりませんけれど、一度に全経路を表示するよりも、指定された必要な経路(その日の経路とか?)を表示してあげるといったUIの方が扱いやすいかもしれないような気もします。(わかってないのに、勝手な想像ですが…)
>excel VBAコードやgoogleスプレッドシートのソースコード
表示はブラウザで行うのではないのでしょうか?
エクセルやスプレッドシートの理由がよくわかりませんが・・・
google map APIを利用して動的にルート検索・表示をする例
https://oshiete.goo.ne.jp/qa/8159078.html
(毎回検索・表示したいというのであれば、ポイント数だけループすればよろしいのでは)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPhone(アイフォーン) Google map のルート保存について 1 2022/05/13 11:50
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- 画像編集・動画編集・音楽編集 Google Earth Pro 高速道路上空を一定の速度で飛ぶツアー動画の作り方は?? 1 2022/06/01 15:10
- 地図・道路 カーナビタイムのルート検索結果について 枚方ー能登のルート 2 2022/08/07 13:03
- 東北 横浜から青森(大間)まで下道で行くことを計画中 10 2022/09/23 20:00
- 東北 気仙沼から須川温泉までの運転について 4 2023/02/10 18:26
- Google Maps Googleマップでは、連絡地下道がある場合、その地下道を通っての直通ルートは表示されないんですか? 1 2022/12/09 13:32
- Google Maps google map 無関係な経路が出来てしまう。 3 2023/04/28 22:58
- 電車・路線・地下鉄 つくばエクスプレス(首都圏新都市鉄道)のつくばから先の延伸先は土浦方面とのこと 筑波山、茨城空港、水 3 2023/04/01 10:15
- Google Maps Google mapの印刷 1 2022/10/12 21:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の 配列の中 出力について
-
二つのbxsliderをレスポンシブ...
-
Googleマップに複数のピンを立...
-
カンマ区切りのデータを配列に...
-
JavascriptからPHPへのAjax通信...
-
要素内を常に一番下を表示させたい
-
jQueryを使いformでsubmitした...
-
変数にドットをいれることはか...
-
.txtファイルの読み込み
-
<input>のvalue値をプルダウン...
-
Selenium4でボタンをクリックで...
-
フレーム内の要素へのXPATHはど...
-
リンク付きの画像をクリックす...
-
Javascriptを使ってQRコード読...
-
プルダウン内容に応じてラジオ...
-
AjaxでSJISファイル読み込みす...
-
Ajaxでフォームデータを連続登...
-
IndexedDB を使ってファイルア...
-
bxsliderで画像毎に表示時間を...
-
タブをフリックでスライドでき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのデータを配列に...
-
二つのbxsliderをレスポンシブ...
-
迷路探索プログラムを作るには...
-
google maps api v3のルート検索
-
how's whether today in yufuin?
-
Google Maps:同マップ内でそれ...
-
Python: TypeError
-
Selenium4でボタンをクリックで...
-
Javascriptを使ってQRコード読...
-
JavascriptからPHPへのAjax通信...
-
IndexedDB を使ってファイルア...
-
同一ページ移動時ハンバーガー...
-
JavaScriptでtabindexの変更っ...
-
jQueryを使いformでsubmitした...
-
SQLのmaxで求めた値を変数に代...
-
インラインフレームを自動更新...
-
階層別の組織図の自動作成について
-
ドラッグ & ドロップでのド...
-
jQuery toggle() 戻るで開いた...
-
AjaxでJSONを受信すると、文字...
おすすめ情報
http://www.kashmir3d.com/
これってCGのソフトのようですね。
グーグルマップとの互換性があるんでしょうか?
また、2つの道の駅間の車ルートは自動生成してくれるんでしょうか?
最遠挿入法をいうアルゴリズムで最短経路をつくったのでそれなりに自信はあるのですが、
やはり全体ルートをグラフィックとして表示できて、とんでもなく最短からはずれた巡回ルートになっていないかを確認できたほうが安心です。
http://gebweb.net/optimap
ここだと100か所までしかできないんです。
ANo2にも書きましたが、一回こっきりならなおさらだと思います。、
A点、B点の経路検索・表示の関数を作っておいて、それで143回ループするのが一番簡単ではないでしょうか。
上記の処理でよければ、ANo2であげたサンプルの、経路検索以下の12行ほどが1回分のそれに該当します。
→143回の表示結果を合成表示できればいいんですけど
>ここだと100か所までしかできないんです。
2回にわければ、ご提示のサイトを利用してもできるのでは?
→一気に表示したいです。
ありがとうございます!
冒頭のpointsに順番に場所名と緯度、経度を入れていけばいいんだと思いますが、
このjavascriptを使っていくhtmlはどう記述したらいいんでしょうか。
恐縮ですがhtmlの部分はありませんでしょうか。
<html>
<head>
<title><div id='map' style='width:800px; height:800px;'></div></title>
</head>
<body>
<script type="text/javascript">
<!--
書いていただいたjavascript
// -->
</script>
</body>
</html>
としたのですがブラウザ表示したら真っ白でした・・。
書き方が間違っているのでしょうか