不使用JavaScript API显示Google方向Web服务的结果

8
我正在开发一个应用程序,它将查找两个点之间的方向,显示在Google地图上并存储在服务器端,以便在需要时可以再次呈现,并比较一条路线与另一条路线。
我已成功使用Google地图API Web服务来查找路线,并且我还使用了Google地图Javascript v3来查找路线并使用DirectionsRenderer在地图上显示路线。
这两种服务返回类似的JSON,但JSON属性名称不同(请参见下面的示例1)。更重要的是,JS API从一个调用到另一个调用返回的lat/lng属性名称不同(请参见下面的示例2)。

因此,问题是我无法使用从服务器端Web服务调用获得的JSON并直接将其传递给javascripts DirectionRenderer类来显示路线。此外,我必须每次在地图上显示路线时都进行JS调用。这将导致我的配额不必要的使用。有没有更好的方法来解决这个问题?我已经阅读了以下问题,但实际上我无法得到答案这里这里

示例1:

Web服务调用结果:

{
    "routes" : [
      {
         "bounds" : {
            "northeast" : {
               "lat" : 12.9198217,
               "lng" : 77.6124895
            },
            "southwest" : {
               "lat" : 12.912811,
               "lng" : 77.60924989999999
            }
         },
          .....

这里没有“路径”属性。 Javascript V3 调用结果:
{
"routes": [
    {
        "bounds": {
            "ta": {
                "d": 12.91281,
                "b": 12.919820000000001
            },
            "ga": {
                "b": 77.60925,
                "d": 77.61249000000001
            }
        },
        ......
        "path": [
                            {
                                "d": 12.913920000000001,
                                "e": 77.60928000000001
                            },
                            {
                                "d": 12.913960000000001,
                                "e": 77.60958000000001
                            },
                            {
                                "d": 12.91398,
                                "e": 77.61
                            }
                        ],
                        ..........

示例2: 另一个Javascript V3调用结果:

{
"routes": [
    {
        "bounds": {
            "Aa": {
                "k": 12.91281,
                "j": 12.919820000000001
            },
            "qa": {
                "j": 77.60925,
                "k": 77.61249000000001
            }
        },
        .....
        "path": [
                            {
                                "k": 12.91281,
                                "A": 77.60925
                            },
                            {
                                "k": 12.913920000000001,
                                "A": 77.60928000000001
                            }
                        ],
                        .........

我需要包含其他细节吗? - Nitiraj
为什么我没有收到任何回复? - Nitiraj
嗨,你能让它工作吗? - KutePHP
1个回答

3
你可以这样做,但是有几个需要注意的地方。
首先,请确保你的应用符合此处10.5.d点的规定: https://developers.google.com/maps/terms#10-license-restrictions 与 Directions API Web 服务返回的 JSON 响应不同的是,JavaScript Directions 服务返回的 JSON 响应没有一致命名的字段可供解析。相反,您需要将 DirectionsResult 对象作为 JavaScript 对象进行访问,其中包含 google.maps.LatLng 对象,例如 routes[0].legs[0].steps[0].start_location https://developers.google.com/maps/documentation/javascript/directions#DirectionsResults https://developers.google.com/maps/documentation/javascript/directions#Steps 对于您从 Directions API Web 服务获取的路线,有多种方法可以在 JavaScript API 上显示它。我更喜欢将 JSON 响应“翻译”成一个DirectionsResult对象。您可以在服务器端或 JavaScript 中执行此操作,但我认为前者更好。
或者,您可以重新查询 Directions 服务(使用 JavaScript 服务)以再次获取路线。这不仅会消耗额外的配额,还可能返回一个不同(更更新)的路线,这是好是坏,这取决于您想要什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接