1

我对此很陌生,对我来说看起来很有趣。有没有办法根据海拔限制在 pointA 和 pointB 之间创建路线。我正在尝试将其用于飞机,因此不需要遵循任何道路:)

IE:海拔限制:200米

点A:38°44′50″N,090°21′41″W - 圣路易斯机场

B点:39°02′56″N,084°40′04″W - 辛辛那提机场

如何在不超过海拔限制的情况下绘制从 A 点到 B 点的路线?

提前致谢...

$(document).ready(function() {
 var path = [
      {lat: 38.74722222, lng: -90.36138889},  // St Louis
      {lat: 39.04888889, lng: -84.66777778}];  // Cincinnati

  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 6,
    maxZoom: 8,
    minZoom: 1,
    streetViewControl: false,
    center: path[1],
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });
  
var flightPath = new google.maps.Polyline({
          path: path,
          geodesic: true,
          strokeColor: '#FF0000',
          strokeOpacity: 1.0,
          strokeWeight: 2
        });

        flightPath.setMap(map);
 
});
html,
body,
#map {
  height: 100%;
  width: 100%;
  padding: 0px;
  margin: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map"></div>

4

1 回答 1

1

到目前为止,不可能让谷歌地图计算出不超过指定海拔限制的路线。

这适用于两者:

现在可用的是请求指定位置的高程数据,以及在给定分辨率下的指定位置旁边的高程数据(例如,当指定 2 个位置时,samples=3将产生两个端点和中点的高程数据)。

所以理论上可以

  1. 用“大量样本”计算路线,
  2. 根据海拔限制评估响应,
  3. 如果某一点超过海拔限制,则更改路线,
  4. 并一遍又一遍地开始程序,直到不再超过海拔限制。

这可能是一项昂贵的任务,具体取决于海拔限制本身和距离。


参考: https ://developers.google.com/maps/documentation/elevation/intro

Google Maps Elevation API 以尽可能高的准确度返回单点查询数据。涉及多个位置的批量查询可能会返回精度较低的数据,尤其是在位置分散的情况下,因为会发生一些数据平滑。
[...]
采样路径请求
- 路径(必需)定义地球上返回高程数据的路径。此参数定义一组两个或多个有序 {latitude,longitude} 对,定义沿地球表面的路径。此参数必须与下面描述的示例参数一起使用。有关详细信息,请参阅下面的指定路径。
- 样本(必需)指定沿路径返回高程数据的样本点数。samples 参数将给定路径划分为沿路径的等距点的有序集合。


脚注/提示

我建议看看其他 API(例如 OpenStreetMap)。也许有一个 API 可以提供基于海拔的路线计算。

如果前端需要 Google Maps UI,则检索到的路线可能会转移到 Google Maps(这将是最简单的部分)。

于 2017-09-05T21:58:05.127 回答