【问题标题】:google map pathRequest not working for polyline谷歌地图路径请求不适用于折线
【发布时间】:2014-09-14 07:06:54
【问题描述】:

我正在开发一个网站,为山地爱好者提供个人山峰列表。

多年来,我一直坚持使用 Google 地图 polyline 的功能 (pathRequest)

我无法理解,因为这段代码是从很多来源复制而来的,而且令人遗憾的是 Firefox 调试在 Google 地图上表现不佳……让事情变得更糟。

这是页面: http://www.mes-sommets.fr/ajouter-un-sommet/

要进行测试,您需要输入"adresse départ" (start)and"adresse arrivée" (end) + "manuel"mode in option"itinéraire"`。

在自动完成中单击 "adresse arrivée" 时会显示错误。

对于这两个选项:

- automatique (google map direction service) -- OK
- manuel (polyline) -- KO

然后我调用相同的函数:

- distance calculation getDistance(path)
- elevation calculation plotElevation(results, status)

自动模式(谷歌地图方向服务):

var path = result.routes[0].overview_path;
getDistance(path);

模式手册(折线):

var polyline_path = polyline.getPath();
getDistance(polyline_path);

函数获取距离:

函数 getDistance(路径) {

var m = google.maps.geometry.spherical.computeLength(path);
var km = m / 1000;

document.getElementById("ninja_forms_field_34").value = km.toFixed(2) + "km";
变量路径请求 = { “路径”:路径, “样本”:256 }

elevator.getElevationAlongPath(pathRequest, plotElevation);

};

函数 plotElevation :

函数 plotElevation(results, status) { if (status == google.maps.ElevationStatus.OK) {

var deniv_positif = 0;
var deniv_negatif = 0;
var elev = results[0].elevation;
for (var i = 0; i < results.length; i++) {

  if ( (results[i].elevation - elev) > 0 ) {
  deniv_positif = deniv_positif + (results[i].elevation - elev);
  }
  else {
  deniv_negatif = deniv_negatif + (results[i].elevation - elev);
  }

  elev = results[i].elevation;

}
document.getElementById("ninja_forms_field_31").value = "+" + deniv_positif.toFixed(0) + " / " + deniv_negatif.toFixed(0) + " m" ;

} }

任何建议都会很棒,如果我没有提供足够的代码,请告诉我。希望没事。

最好的问候,

本杰明

【问题讨论】:

    标签: google-maps-api-3 map polyline elevation


    【解决方案1】:

    我能看到的只有这个。

    DirectionsRoute overview_path“一个 数组 的 LatLngs”

    ElevationServicegetElevationAlongPath 函数期望 PathElevationRequest 有一个 Array 作为其路径。

    到目前为止一切都很好......

    然而,PolylinegetPath 函数返回一个 MVCArray,而不仅仅是一个 Array

    在我看来,它们通常可以互换,但这可能是它们不能互换的地方。

    您可以尝试调用 MVCArray 上的 getArray 函数将其转换为 Array 并查看是否有任何不同。

    var polyline_path = polyline.getPath();
    getDistance(polyline_path.getArray());
    

    【讨论】:

    • 你好,邓肯,太好了!谢谢。
    • 酷!如果有用,请随意accept the answer 正确
    猜你喜欢
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多