google-maps - 从 Google map API 响应渲染 Google map

标签 google-maps laravel-5 google-maps-api-3

我正在尝试绘制 A 点到 B 点之间的路线。我一直在点击以下链接:

https://developers.google.com/maps/documentation/directions/intro

以下链接是如何获取蒙特利尔和多伦多之间路线的示例。 https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=API_KEY

当我运行此 URL 时,我收到一个 JSON 响应。我已经检查了很多,但无法弄清楚如何将此响应的详细信息渲染到 map 中。有人可以帮我指出正确的方向吗?

我已经检查过此链接: https://developers.google.com/maps/documentation/javascript/examples/directions-simple

我使用alexpechkarev/google-maps包和Laravel来构建这个解决方案。我已经从包中运行了路线服务,它返回 JSON 对象,该对象类似于 google map api 指南中的链接给出的对象。

感谢任何帮助。

谢谢。

最佳答案

这是一般配方:

您需要从 JSON 响应中提取路线的坐标。 这些内容在 2 个详细级别的响应中。

  1. 沿线主要交叉路口的明确坐标。您可以用简单的英语阅读这些内容,并且可以将它们提取为关联数组成员。

  2. 除了上述内容之外,还有一个编码字符串,其中包含更多交点之间的点对(lat, lon)。你必须解码这些,并且有一个可用的算法。 (几周前我做了一个 PHP 版本,链接如下)。顺便说一句,第二个数组的原因是这样的:想象一条没有交叉点的漫长蜿蜒的乡村道路...这个数组将沿着道路曲线行驶,给出 1 中未找到的 (lat,lon) 对。

3).构建一个坐标数组(如果需要更精细的细节,则从 1 开始,包括 2)。

4)然后使用如下代码(从下面的链接窃取并稍作调整:https://developers.google.com/maps/documentation/javascript/examples/polyline-simple :),向您展示如何在 map 上绘制线条。

<script>

      function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 3,
          center: {lat: 0, lng: -180},
          mapTypeId: 'terrain'
        });

        var routeCoordinates = [    // put your array here
          {lat: 37.772, lng: -122.214},
          {lat: 21.291, lng: -157.821},
          {lat: -18.142, lng: 178.431},
          {lat: -27.467, lng: 153.027}
        ];
        var routePath = new google.maps.Polyline({
          path: routesCoordinates,
          geodesic: true,
          strokeColor: '#FF0000',    // adjust line colour
          strokeOpacity: 1.0,        // adjust line opacity  
          strokeWeight: 2            // adjust line thickness
        });

        routePath.setMap(map);
      }
    </script>

Google 链接中的示例向您展示了如何执行涉及 HTML 的微小操作等。

现在是解码折线点的好地方:

Get itinerary latitudes & longitude from google maps with PHP

上面的函数 decodePolylinePoints($pointsString) 返回一个 (lat,lons) 数组,您可以使用它来绘制路线。

您需要研究 JSON 才能理解代码,虽然它看起来很困惑,但逻辑却很完美。将 JSON 放入 VSCode 等编辑器中,它将以正确的格式显示。

关于google-maps - 从 Google map API 响应渲染 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52922532/

相关文章:

javascript - 为什么当我尝试创建第二个 map 实例时,Google Maps JavaScript API v3 无法正常工作?

谷歌地图方向的 html 代码不起作用

session - Laravel 不在 Redis 中存储 session 数据

javascript - 如何获得Google Place ID?

android - Google maps android on cluster items 点击不工作

javascript - 如何在 Google map 中收听用户生成的缩放?

google-maps - Google Geocoding XML 响应删除了公寓/套房号码

javascript - 如何在谷歌地图上绘制路线

php - Laravel 5 session 生命周期

Laravel 数据上传进度条