Google Maps のAPIを用いてAndroid アプリを開発しているのですが、Google Mapsのルート検索でルートを決定した後、そのルート上を歩いているようにみせかける(シミュレーション)を行うことは可能でしょうか?

分かる方宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。



>そのルート上を歩いているようにみせかける
というのが、どのように表示をしようとしているのかわかりませんが・・・

ルートを表示するだけなら、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>

<!-- 以下続く -->
    • good
    • 0
この回答へのお礼

遅くなりましたが、有難う御座います!
参考になりました!

お礼日時:2015/06/21 22:31

<!-- 続き -->


<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>
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelは表計算ソフトではないのか?

以下の文は数年前に自分がA,Bさんと会話した内容です。

A「表計算ぐらい出来なきゃヤバイよ。」
自分「Excelなら習った事あるが・・・」
A「(Bさんに対して)Excelって何?」
B「知らない!!」
A「(自分に対して)Excelなんてのは無いよ!!」
自分「え?」

大体こんな感じだったと思います。
自分は今もExcelは表計算ソフトだと思っていますが、もしそうなら表計算ソフトを語る人がExcelを知らないなんて有り得ない気がします。
もしかしてExcelは表計算ソフトでは無かったのでしょうか?

Aベストアンサー

今は表計算ソフトというとExcelしかないような感じですが、かつては違っていました。Excel自体Multiplanの後継ソフトですよね。

こういうことはもうないとは思いますが、その方は本当にExcelを使っていないのかもしれませんよ。

今はフリーの表計算ソフトもありますし、別に高価なOfficeを買わなくても実用になる時代でもあります。
またその人はオールドな表計算ソフトのファンで、固有名詞であるExcelを普通名詞の表計算ソフトとまったく同じ意味で使うのに抵抗があるのかもしれません。

実は以前私もLotus123が大半であった時代に、後からこれを覚えた人が表計算ソフトのことを「ロータス」というので一寸抵抗を覚えたことがあります。

ちなみに表計算ソフトの起源はVisicaicで、その当時(30年前)革命的ソフトでしたが残念ながらその会社はもうありません。
多分Visicalcのファンだった人は、LotusやMultiplanが普通名詞のように使われることは我慢ができなかったかもしれません。

QGoogle Map APIを使用して、ふきだし内にExcelファイル

Google Map APIを使用して、ふきだし内にExcelファイルへのリンクをはる方法

GoogleMapAPIを使って、地図上に吹き出しがでるように作成しました。
吹き出し内にリンクをはり、フォルダ直下のエクセルファイルを開くように
設定したいのですが可能でしょうか。URLしか設定できないのでしょうか。

よろしくお願いします。

Aベストアンサー

下記のように吹き出し内に直接ローカルパスのリンクを指定してみてはどうでしょうか?

content: '<a href="file:///C:/sample.xls">エクセルファイル</a>'

QExcelの計算式について

Excelの計算式について

Excel2000を使用しているのですが、Excelの計算式の計算結果と
電卓を叩いて計算した結果が違っています。

計算式は単純な掛け算ですが、単純に数字の入っているセル同士の掛け算ではなく、
数式の入っているセル同士の掛け算なので、それが原因しているのでしょうか?

どなたか解決策をお持ちの方がいらっしゃいましたら情報提供下さい。

Aベストアンサー

(1)倍精度実数の有効桁
内部で使用する倍精度実数型は10進換算で有効桁が
15桁までです。これ以上の幅のある値の計算を行う
と、下位桁は切り捨てられるので、誤差が生じます。
演算途中に一時的にでも15桁を超えると同じ現象が
発生します。

(2)少数部の表現
内部では2進数なので、2のべき乗、及びその和で
表現できる値以外は正確ではありません。
よって、少数部のある実数同士の演算では正確に
計算されないことがあります。
【2のべき乗】
0.5 = 2^(-1)
0.25 = 2^(-2)
このように10.5とか2.25は正確に表現できますが、
12.37のような値は近似値にしかなりません。

回避手段としては29桁以内ならマクロで内部形式を
10進型に変換してから計算し、文字列として表示
するなら誤差は出ません。但し、これを計算に使う
ことはできません。計算のため数値化する際に(1)の
現象が発生して誤差が出ます。

QGoogle maps API

Google maps APIを使ってみたいと思っています。Googleのページを見ましたが英語で書いてあって良くわかりません。サンプルみたいなのも書いてありましたが良くわかりませんでした。

日本語で書いてあってわかりやすくしてあって説明してあるページとかを知っている方がいらっしゃいましたらご教授下さい。よろしくです。

_(_ _)_

Aベストアンサー

Googleで「Google maps API」で検索すると結構出てきます。
下記のサイトはそこの管理人が役に立ったページにリンクを張っています。
http://www.mukom.netfirms.com/googlemaps.html

QExcelViewerで計算出来ないんですか?

Excel無いのにExcelファイルを送ってきて、これで計算しろと言う。
ExcelViewer2003なるものを入手インストールしたのだけれど、数値の入力が出来ないためNG。
何か方法は?
Excelファイル内の計算式がわかれば、別個に(C++とかで)計算プログラムを作ればいいのだが、Excel無しでは知る方法はないのか?
相手先は、細かいことに融通の利くところではなく、「出来なきゃ買え!さもなきゃよそに出す」っていう状態なので・・・

Aベストアンサー

Office互換のフリーソフト『OpenOffice.org』をお勧めします。
http://ja.openoffice.org/
もちろん完全な互換性はありませんが、ちょっとした計算なら十分にこなします。
特に「Excel無いのにExcelファイルを送ってきて、これで計算しろと言う」ようなシロウトの作るファイルがそんな高尚なものであるわけもないのでこれで十分でしょう。

ただ、どうしてもExcelが必要な場面もありますから今後のことを考えれば買っておいた方がいいと思いますよ。

QGoogle Maps API + WikiみたいなのをCGIで

Google Maps APIを使用して誰でも書き込める地図を作りたいと思いますが、インストールしたいサーバに制限があり利用できるのはVBScriptかPerlぐらいで、PHPやPostgres,MySQL等は利用できません。

要は誰でもXMLを編集できればいいだけだと思うので、技術的にはVBScriptだろうとPerlだろうとできると思うのですが、その認識で合っていますでしょうか。
また、そのようなスクリプトは既に存在しますでしょうか?
組まなくて済むなら大助かりです。

Aベストアンサー

余り教えたくないですけれど(笑)

汎用Google Maps APIスクリプト KsGMap
http://www.ksgmap.jp/

GoogleMapsEditor
GoogleMapsAPIを利用した地図コンテンツを
プログラムなしで作成できる編集ソフトです。
http://hsj.jp/gme/

Google Mapsを自サイトに設置する
http://allabout.co.jp/internet/javascript/closeup/CU20051116A/

QExcelで2乗とか3乗の計算結果について

先ほど、少し興味を持ちまして、Excelで2の50乗の計算方法を調べました。
調べたところ、セルの中に「=2^50」と書けば、その答えを導き出せるだろうと分りました。

しかし、EXCELでこれを計算させると、セルの書式を数値に変えても、
答えは『1,125,899,906,842,620』でした。

これを実際に、Windowsでも標準で付いている計算機で計算しても、
答えは『1,125,899,906,842,624』となります。

Excelの書式を変えてみたり、小数点以下を増やしても、どうしても最後の『4』が導き出せません。

これは、計算式の書き方が悪いのでしょうか?
それとも、何か設定の問題なのでしょうか?
正しい計算方法などがあれば、教えて下さい。

宜しくお願いします。

Aベストアンサー

結論を言ってしまえば、Excelの計算結果は15桁を超えてしまうと誤差を生じます。なぜそうなるかは良い説明があるので、次のリンク先の記事を読んでください。

http://pc.nikkeibp.co.jp/pc21/special/gosa/

で、15桁までなら大丈夫ってことは、=2^49はどうなるんだ?と試したところ、562,949,953,421,312と言う答えになりました。やはり大丈夫のようです。Excelを使う以上はこの15桁の制限を意識しておかなければなりません。ちなみに、OpenOffice CALCでも全く同じ結果になりました。

QGoogle Maps API は利用申請が必要?

現在Google Static Maps API(Google Maps API)を使用して、地図表示をするページを作成しようとしているのですが、自社webサイトに掲載するために必要な手続きなどがあれば教えていただきたいです。

やろうとしていることは、

QRコードから入れるwebモバイルサイト内に店舗ごとのページがあって、「地図を表示」のリンクをからジャンプするとGoogle Static Maps APIを使用した地図を表示…といったものです

QRを読むか、アドレスを入力すれば誰でも閲覧できるページにするので、利用規約上は問題ないと思っているのですが

お知りの方がいたらしたら、ご回答くだされば助かります。

Aベストアンサー

GoogleMapAPIを動作させるためにはキーコードが必要です。
これはドメインによって異なりますので、利用されるドメインでGoogleの申し込みフォームから申請すれば速攻で入手できます。
問題点はアクセスの量が多いサイトだとGoogle側のサーバに負荷がかかるため、無料で提供は一日500000ページビューを超えないように、超える場合は要相談ということだそうです。
GoogleからMAPS APIというキーワードで検索してサインアップのページを見ると詳細がでていますのでそちらをご参照ください。

Qexcelと電卓で計算の結果が異なって表示される

=1000/12*0.012

excel2010で上記のように入力した場合、計算結果は「1」と表示されます。
しかし、電卓で計算した場合は、「0.9999999999」と表示されます。
電卓が正しいのですが、excelで正しく計算結果を表示することは可能でしょうか。

(表示形式等は変更してみましたが正しく表示されません)

Aベストアンサー

みなさまが仰るように、excelが正しいです。
これは、電卓もexcelも使うことなく、単純に正しいと分かります。

たとえば、「1000/12*12」としましょう。
答は「1000」です。
割る数字と、かける数字、同じ数字ですよね。
それであれば、答は「割ったりかけたりする前と同じ」になります。

では、「1000/2*0.002」としましょう。
答は「1」です。
では、「1000/5*.005」としましょう。
答は「1」です。

割る数字とかける数字、同じ数字の桁違いですよね。
つまり、1000に対して桁だけを変更させる意味になります。
この場合、かける数字のほうが0.001の桁になっている為、1000→1に変わります。

理屈的にはこういう考え方になります。
納得いきますか?

電卓の場合は、一旦「1000/12」という数式の答を出して、それに「0.012」をかける。という計算式になってしまいます。
つまり、
1000/12=83.33333
83.3333×0.012=0.99999
という感じでしょうね。

だから、計算の理屈が若干違います。
数学のテストなどで、質問文の計算式が出てきた場合、正解とされるのは「1」の方です。

みなさまが仰るように、excelが正しいです。
これは、電卓もexcelも使うことなく、単純に正しいと分かります。

たとえば、「1000/12*12」としましょう。
答は「1000」です。
割る数字と、かける数字、同じ数字ですよね。
それであれば、答は「割ったりかけたりする前と同じ」になります。

では、「1000/2*0.002」としましょう。
答は「1」です。
では、「1000/5*.005」としましょう。
答は「1」です。

割る数字とかける数字、同じ数字の桁違いですよね。
つまり、1000に対して桁だけを変更させる意味になりま...続きを読む

QGoogle Maps API で 住所データを渡してその場所の地図を表示させたい

Google マップでは検索ボックスに住所を入れ「検索」ボタンをクリックするとその場所が表示されます。
http://www.google.co.jp/maphp?hl=ja&tab=wl&q=

このようなことを、Google Maps APIを用いて自分のサイトで行いたいと思っています。
いろいろなサイトを調べているのですが、マーカーや吹き出しをつけることはできても、入力された住所で地図の表示位置を変えることがわかりません。

はてなマップはGoogle Maps APIを使用しているとのこと、こちらのサイトでも検索ボックスに住所を入力したら地図の表示が変わるので、APIを用いてもできるのかと予想はしているのですが、実際の方法がわかりません。
http://map.hatena.ne.jp/

クラス名やヒントとなるキーワードだけでも結構ですので教えて頂ければと思います。
宜しくお願いします。

Aベストアンサー

google自体は住所の検索を提供していません。
「はてな」がどうやっているかは判りませんが、
こちらではフリーの検索サービスを使っています。

http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=1706&forum=2&post_id=7717#forumpost7717


人気Q&Aランキング

おすすめ情報