• ベストアンサー

GoogleMapAPIv3でルート上の座標を取得

Google maps api v3において、ルート検索をして経路上の座標を取得する方法を探しています。 「右折する」「国道2号線に入る」といった経路上の情報を文章として取る方法は分かったのですが、 座標として取りたいです。 できれば、まっすぐな道でも数100mごとに座標が取れると嬉しいです。 イメージとしては、 http://orchard.ddo.jp/GMAP_ROUTE/index.php なのですが、リンク先はAPIがv2っぽいので使えませんでした。 v3でもできないか調べてみたのですが、分からなかったため質問させて頂きました。 分かる方宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • my--
  • ベストアンサー率89% (91/102)
回答No.3

DirectionsResult の表示 http://code.google.com/intl/ja/apis/maps/documentation/javascript/services.html#DisplayingResults このあたりは理解できてるんですよね。 directionsService.route(request, function(result, status) {  if (status == google.maps.DirectionsStatus.OK) {   var arr = result.routes[0].overview_path; // ルートの全行程を表す LatLng の配列   ...  } }); 直線では表せないところに座標が置かれてます。「まっすぐな道でも数100mごと」ってわけにはいかないみたい。 DirectionsResult オブジェクトの仕様 http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html#DirectionsResult DirectionsRoute オブジェクトの仕様 http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html#DirectionsRoute

hayu-14
質問者

お礼

回答ありがとうございました。 いえ、理解できていませんでした。申し訳ない。 また、たとえ座標が取れても曲がり角とかの座標しか取れないと思っていたのですが、 やってみるとかなりの密度で座標が取得できたので、私としてはoverview_pathを使ってみようかと思っています。 さすがにまっすぐな大通りとかを進んでるとあまり取れませんが、交差点もあれば数100mごとには取れているかと思います。 お騒がせしました。ありがとうございました。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

ちゃんと確認していませんが… googlemapはAPIが公開されているので、そこの説明を読むのが一番かと。 http://code.google.com/intl/ja/apis/maps/documentation/javascript/services.html#Directions 結果のDirectionStep内のLatLngデータを順に追っていくというのではダメなのでしょうか? (検証はしていませんので、考え方のみです)

hayu-14
質問者

お礼

回答ありがとうございます。 my--様も仰っていますが、DirectionsResultsオブジェクトのoverview_pathのことでしょうか。 正直な話、これの存在を知りませんでした。。。 リンク先は知っていたのですが、別の所ばかり見たり「座標」とか「緯度経度」とかで検索したりしていたので見つけることはできませんでした。 これを使うことで、概ね私の要求は満たせるかと思います。

回答No.1
hayu-14
質問者

お礼

回答ありがとうございます。 リンク先見ましたが、曲がり角などを取得するもので、 座標(緯度経度)を取るものではないようですね。

関連するQ&A

  • GoogleMapsでルート内の座標を認識したい

    Google Maps API で目的地を設定しそれまでのルートを表示することはできるのですが、そのルート上に数メートル間隔で座標をマーカーなどで表示させたり、100m毎くらいに座標を認識したいのですが可能でしょうか? 可能であればAPIとどういったソースなのか教えてください。 よろしくお願いします。

  • GoogleMapAPIv3でルート上の座標を取得

    http://okwave.jp/qa/q6978088.html 上記URLの過去の質問を見て疑問に思いましたので質問させていただきます。 上記URLでもありましたようにルート上の座標を取得しようとして var arr; var directionsService = new google.maps.DirectionsService(); directionsService.route(request, function(result, status) { if (status == google.maps.DirectionsStatus.OK) { // ヒットした結果を表示 directionsDisplay.setDirections(result); arr = result.routes[0].overview_path; // ルートの全行程を表す } }); alert(arr.length); と記述しました。 arr には経路検索のルート上の座標が含まれているのですがこれを 取り出すためにはどうすればよいでしょうか。取り出してgoogleMap上にマーカーとして 表示したいと思っています。 directionsService.route(){ } の外では alert(arr.length); と記述しても 「lengthの値を取得できません。オブジェクトがNullまたは未定義です。」 となりarrを取得できないようです。 また、仮に取得できるようになったとして取得した座標の配列を どうやって地図上にマーカーとして表示させればよいでしょうか。 今はマーカーを表示させるのに var markerOpts4 = {position: new google.maps.LatLng(36, 137),  map: mapObj} var marker4 = new google.maps.Marker(markerOpts4); というように1つずつマーカーを設定しています。 取得した座標の配列を上記の記述方法にどう組み込めばよいのかいまいちよくわからないです。

  • GoogleMapsAPI Key取得ができない

    HPを変更しました。 google maps を入れたいのです。 しかし、下記コメントが出てます。 このウエブサイトには 別のgoogle maps apiキーが必要です。新しいキーは http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key で作成できます。 ここを調べて見ても、apiキーが取得できません。 Google Maps APIを使うための API Key の取得が、V3では不要になりました。 と書いてありますが、現状api keyを取得しないと、使えません。 いろいろ調べたのですが、v2の取得方法は書いてありますが、現状では役に立ちません。 http://code.google.com/intl/ja/apis/maps/signup.html で登録できないから、質問しています。 具体的なやり方を教えてください。

  • google maps api v3のルート検索

    google maps api v3のルート検索でA,Bマーカーでなく、 オリジナルのマーカーにてドラッグ&ドロップマウスで移動可能なルート検索を javascriptで作るやり方が知りたいです。

    • ベストアンサー
    • AJAX
  • GoogleMapsApiで海外ルート検索できない

    Google Maps Api v2を使ってルート検索を行うWebアプリケーションを作成しました。 国内の検索は問題ないのですが、国外(韓国)の検索だけエラーが返って来てルート検索できません。 ロケールをko_KRにしても一緒でした。 Apiに渡すポイント情報は地名でなく緯度経度にしています。 どなたか原因が分かる方がいましたらよろしくお願いいたします。

  • Google Maps APIを用いて路線取得

    iPhoneアプリ作成を勉強しています。 路線図を表示するiPhoneアプリを作成したいのですが 路線図の座標を得る方法がわからず困っています。 ネットで検索すると、 Google Maps API V3 を使用して作る方が多い事はわかったのですが、 どのような手法を用いれば良いのかがわかりません。 そこで質問なのですが、 参考サイトや参考書籍などを教えていただけませんか?

  • Goole Mapsのマイマップで出力したKMLの座標一覧を取得したい

    Goole Mapsのマイマップで出力したKMLの座標一覧を取得したい。 マイマップの最短経路を求めるために Waypoint一覧を作りたいのですが、 マイマップから出力したKMLにはURLが書かれており 座標の取得方法がわかりません。 どなたか教えてください。 宜しくお願い致します。

  • 国道298号線から国道6号線へのルート

    三郷方面から国道298号線で新葛飾橋?(中央)を直進し、国道6号線へへのルートは出来るのでしょうか? 地図では左折して合流みたいな感じなんだけど・・・。 やっぱり橋を通過後に、左折→右折→県道→6号線がベストですか?

  • Googlemapsapi V=3ルート検索

    Google maps API V=3でのルート検索について サイトに地図を表示させてルート案内や距離、時間が取得できるようにしたいと考えておりますが初心者のため、挫折しています。 上級者の皆様のご教示をいただきたく投稿させていただきました。 状況 まず、サイトに地図を表示させてマーカーを地図上に設置しました。 このページからボタン等でルート案内のページにアクセスするものを実現したいと考えています。 ルート案内を取得するにはGDirectionsクラスのオブジェクトを取得する必要があるとのことでした。 V2でのコードGBrowserIsCompatible、GUnloadがV3では対応していないとの情報もあり、GDirectionsクラスのオブジェクトの取得ができない(地図が表示されない)状況です。 参考サイトを探しているのですが、V3で応用できるものが見つかりませんでした。 参考サイト http://www.ajaxtower.jp/googlemaps/ 実現したい参考ページ ttp://www.fm-oze.co.jp/furusatokan/fruits/apple/y5.html この地図のページからルート案内のページへアクセスできるようにしたい。 *また、地図のページから直接googleのページに住所情報を保持してルート・乗り換え案内のページにアクセスする方法はないでしょうか。 ttp://maps.google.co.jp/maps?f=q&source=s_q&hl=ja&geocode=&ie=UTF8&hq=&z=16& よろしくお願いします。

  • google maps api ルート線変更

    Google Maps JavaScript API v3 でルート検索で表示されるポリラインの色や太さを変更したいのですが行き詰ってます。 ネットで調べてますと、polylineOptionのstrokeColorやstrokeWeightなどで変更できるような事は書いてあるのですが、どうやってもうまくいきません。 Googleデベロッパーで紹介されています下記のルートサービスのひな形をもとにいろいろやっているのですが、どこにどのように記述すればいいのでしょうか。 ------------------------------------------------ var directionsDisplay; var directionsService = new google.maps.DirectionsService(); var map; function initialize() { directionsDisplay = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var mapOptions = { zoom:7, mapTypeId: google.maps.MapTypeId.ROADMAP, center: chicago } map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); directionsDisplay.setMap(map); } function calcRoute() { var start = document.getElementById("start").value; var end = document.getElementById("end").value; var request = { origin:start, destination:end, travelMode: google.maps.TravelMode.DRIVING }; directionsService.route(request, function(result, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(result); } }); } --------------------------------------------------

専門家に質問してみよう