• ベストアンサー

GoogleMapで始点からルート上の点の間の距離

http://okwave.jp/qa/q8790394.html こちらで質問したご回答を頼りにプログラミングしたいのですが GoogleMapで始点からルート上の点の間の距離をどう定義すればいいのか分からないので教えてください。 ↑の質問で >距離を累計していって指定距離を超えたところで、その区間内を補間して座標を求めるといった感じでいかがでしょうか? とご回答を頂いたのですが具体的にどう累計していけばいいかも分かりません。 また、2点間の直線距離ではなく、ルート上を辿った距離です。

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

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

こんにちは。前回の回答者です。 >具体的にどう累計していけばいいかも分かりません。 考え方を理解できないと、コーディングまでには程遠いことになってしまいますが… 簡単な原理として、経路が直線の区間の集合になっているものとして、各区間の距離と座標がわかっているとします。  区間1:{始点座標:x1,y1, 距離:d1}  区間2:{始点座標:x2,y2, 距離:d2}  区間3:{始点座標:x3,y3, 距離:d3}    ・・・・・・・・・・・・  区間n:{始点座標:xn,yn, 距離:dn} d1からdnを加えたトータルが全区間の距離になっていることはわかると思います。 スタート地点からルートに沿って指定距離行ったところを求めたければ、実際に移動しながら測るのと同様に、始点から順に距離を計測していけばよいことになりますよね? 仮に、d1+d2<指定距離<d1+d2+d3になったとすれば、求めたい地点は(x2,y2)と(x3,y3)の間にあることがわかり、この間は直線で近似していますので、補間して求めればよいということになります。 前回の回答時には、DirectionsServiceのレスポンスの各stepが直線になっていると勘違いしていましたが、実は、よく調べてみると、どうも各stepもポリラインで構成されているようです。 それなので、正確に求めたい場合は、結局このポリラインデータを解析することになりそうです。 (かなり大雑把でよければ、各stepを直線近似してしまってもよいかも)  https://developers.google.com/maps/documentation/directions/#JSON ポリラインデータを解析するには、Google Mapsのgeometry libraryを利用するのが便利です。 パスの取り扱いや距離・面積の計算などが簡単にできるようになっています。 とはいえ、ここまで詳細に経路を追いかけるとなると、DirectionsRendererを利用する意味も薄れてしまうので、経路表示も直接ポリラインで記すようにしても大した手間ではなくなりますね。  https://developers.google.com/maps/documentation/javascript/geometry