![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
No.1ベストアンサー
- 回答日時:
こんにちは。
>そのルート上を歩いているようにみせかける
というのが、どのように表示をしようとしているのかわかりませんが・・・
ルートを表示するだけなら、DirectionsRendererを利用することで比較的簡単にできます。
自分で制御して書くなら、ポリラインを利用して描画することも可能です。
あるいはルートを辿って人型がアニメーションで移動するとかでしょうか?
以前の質問で「ルート検索をし、それに沿って距離を何分割かして表示したい」というものがありました。
http://oshiete.goo.ne.jp/qa/8793696.html
コードの提示前に締め切られちゃったので投稿してませんが、以下ご参考までに。
ルートの解析など余分な部分が入っていますが、多少似たところがあるかと思います。
※ピクセル数などはPCを想定しています。
※スタート、ゴールはドラッグ可能。例ではルートを4分割で表示。
※分割点をクリックするとその座標が表示されます。
※以下、全角空白は半角に。
(文字数制限のため2分割になります)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false" …
</head>
<body>
<div style="width:860px;">
<div id="map" style="float:left; width:640px; height:600px;"></div>
<div id="route" style="float:right; font-size:11pt; width:220px;"></div>
</div>
<!-- 以下続く -->
No.2
- 回答日時:
<!-- 続き -->
<script type="text/javascript">
(function(){
//地図表示
var mapDisp = function(lat, lng, id){
return new google.maps.Map(document.getElementById(id), {
zoom: 15,
center: new google.maps.LatLng(lat, lng),
mapTypeId: google.maps.MapTypeId.ROADMAP,
scaleControl: true,
scrollwheel: false
});
}
//マーカー作成
var createMarker = function(char, lat, lng, col){
var flg = !!(char=="S" || char=="G");
var chst = "d_map_pin_letter_withshadow";
var chld = char + "|" + col + "|000000";
var icon = {
anchor: {x:10, y:34},
url: "http://chart.apis.google.com/chart?chst=" + chst + "&chld=" + chld
};
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lng),
map: $map, draggable: flg, icon: icon
});
if(flg) google.maps.event.addDomListener(marker, "dragend", routeSearch);
return marker;
}
var clickHandler = function(n){
return function(){
var msg = "point " + (n+1) + "\n\n" + round($markers.sectors[n].getPosition());
alert(msg);
}
}
var initMarker = function(){
var m = {
start: createMarker("S", 35.6908, 139.7564, "AABBFF"),
goal: createMarker("G", 35.6786, 139.7609, "FFAAAA"),
sectors: [],
sectorsNum: 3,
sectorsDef: 0,
clearSector: function(){
for(var i=0; i<this.sectorsNum; i++) this.sectors[i].setVisible(false);
this.sectorsDef = 0;
},
setSector: function(pt){
if(this.sectorsDef<this.sectorsNum){
var sec = this.sectors[this.sectorsDef++];
sec.setPosition(pt);
sec.setVisible(true);
}
}
}
for(var i=0; i<m.sectorsNum; i++){
var sec = createMarker((i+1).toString(), 0, 0, "FFFF66");
google.maps.event.addDomListener(sec, "click", clickHandler(i));
m.sectors[i] = sec;
}
m.clearSector();
return m;
}
//ラインObject作成
var polyLine = function(){
return new google.maps.Polyline({
strokeColor: '#006644',
strokeOpacity: 0.5,
strokeWeight: 6,
map: $map
});
}
//経路検索
var routeSearch = function(){
var request = {
origin: $markers.start.getPosition(),
destination: $markers.goal.getPosition(),
travelMode: google.maps.TravelMode.DRIVING
};
directionS.route(request, function(response, status){
if (status == google.maps.DirectionsStatus.OK) pathCombine(response);
});
}
//経路統合・表示
var pathCombine = function(r){
var step, leg = r.routes[0].legs[0];
var path = new google.maps.MVCArray();
var i, p, j, pt;
for(i=0; step=leg.steps[i++];){
p = google.maps.geometry.encoding.decodePath(step.polyline.points);
for(j=0; pt=p[j++];) if(!(i>1&&j==1)) path.push(pt);
}
$pathLine.setPath(path);
pathAnalyze(path);
}
//経路解析
//(座標値リスト作成・区間点表示)
var rd = function(n){ return Math.round(n*10000)/10000; }
var round = function(pt){
return " ( " + rd(pt.lat()) + ", " + rd(pt.lng()) + " )";
}
var interpolate = function(path, r){
var p1 = path.getAt(0), p2 = path.getAt(1);
var lat = (p2.lat() - p1.lat()) * r + p1.lat();
var lng = (p2.lng() - p1.lng()) * r + p1.lng();
return { lat:lat, lng:lng };
}
var pathAnalyze = function(path){
var i, pt = path.getAt(0);
var subPath = new google.maps.MVCArray();
subPath.push(pt);
var sd = google.maps.geometry.spherical.computeLength(path);
var subD = 0, secD = sd / 4;
sd = Math.round(sd*100)/100;
var txt = "【 座標リスト 】<br>全長=" + sd;
txt += "<ul style='margin:0;'><li>#1" + round(pt) + "</li>";
$markers.clearSector();
for(i=1; pt=path.getAt(i++);){
subPath.push(pt);
sd = google.maps.geometry.spherical.computeLength(subPath);
txt += "<li>#" + i + round(pt) + "</li>";
subD += sd;
while(subD >= secD){
subD -= secD;
var secP = interpolate(subPath, (sd - subD)/sd);
sd = subD;
$markers.setSector(secP);
subPath.setAt(0, new google.maps.LatLng(secP.lat, secP.lng));
}
subPath.removeAt(0);
}
document.getElementById("route").innerHTML = txt + "</ul>";
}
//初期設定
var $map = mapDisp(35.684, 139.756, "map");
var directionS = new google.maps.DirectionsService();
var $markers = initMarker();
var $pathLine = polyLine();
routeSearch();
})();
</script>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPhone(アイフォーン) Google map のルート保存について 1 2022/05/13 11:50
- シティサイクル・電動アシスト自転車 自転車での最適ルートを出してくれるアプリってあります? 1 2022/04/13 20:15
- 地図・道路 カーナビタイムのルート検索結果について 枚方ー能登のルート 2 2022/08/07 13:03
- Google Maps Google Maps にお店の名前を表示する方法は? 2 2022/12/26 16:21
- 国産車 「純正ナビ」と「スマホのナビ」の相違 5 2023/03/04 21:54
- Google Maps Googleマップでルート検索し、部分的にドラッグして道を変えたルートを保存する方法ありますか? 1 2023/03/18 09:14
- Google Maps スマホでルート検索はどうやりますか パソコンならGoogleで地図というところからできますが 5 2023/08/12 13:08
- 電車・路線・地下鉄 【乗り換え】私はしばらく電車に乗っていません。そこで、乗り換え方を教えてください。 4 2022/11/22 17:30
- Google Maps 沖縄の宮古島と橋でつながる来間島のGoogleストリートビューに写る飛行物体・・・これは何ですか? 2 2022/04/13 18:17
- バス・高速バス・夜行バス 使いやすいバスのルート案内 3 2022/10/14 11:23
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
$("body").height();と$("body"...
-
パス付きサイトのjavascript解析
-
[Javascript] キーボードからの...
-
google apps scriptの終了のさせ方
-
ローカルにあるファイルを検索...
-
javascript初心者です。速攻で...
-
Google Maps API v2 ルートのシ...
-
JavaScriptで年月日表示のカウ...
-
APIを使って埋め込んだグーグル...
-
ジャバスクリプトで文字列を変...
-
JSONリストの文字列が含まれる...
-
GASでundefinedエラーが出ます
-
vb.netでの記述方法について 以...
-
JavaScriptで文字列の特定文字...
-
お世話になります。今ホームペ...
-
なぜmatchメソッドがエラーにな...
-
C#で、ContextMenuStripに動的...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#で、ContextMenuStripに動的...
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
ASP.NET MVCでObjectをjsに渡す
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NETのコントロールの値をJa...
-
ローカルにあるファイルを検索...
-
シンプルなweb版スタンプラリー...
-
なぜmatchメソッドがエラーにな...
-
jqGridについて
-
APIを使って埋め込んだグーグル...
-
イラレでナンバリングする方法
-
JavaScriptで文字列の特定文字...
-
【javascript】正規表現で括弧...
-
VSCODE[Python]の設定について
-
JAVASCRIPTで万年カレンダーを...
-
Ajaxでタイムアウトしてしまう
おすすめ情報