首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google和duration_in_traffic

Google和duration_in_traffic
EN

Stack Overflow用户
提问于 2018-07-28 07:11:01
回答 2查看 1.1K关注 0票数 1

我正在尝试理解DistanceMatrix API。当我在浏览器上这样做时:

钥匙

我拿到duration_in_traffic了。

代码语言:javascript
复制
{
   "destination_addresses" : [
      "17 Orchard Rd, Bagumbayan, Quezon City, 1109 Metro Manila, Philippines"
   ],
   "origin_addresses" : [ "74 C. Benitez St, Quezon City, Metro Manila, Philippines" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "8.5 km",
                  "value" : 8470
               },
               "duration" : {
                  "text" : "23 mins",
                  "value" : 1406
               },
               "duration_in_traffic" : {
                  "text" : "35 mins",
                  "value" : 2112
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

但是当我在戈朗使用maps的时候

我没有得到duration_in_traffic,只返回null

代码语言:javascript
复制
    r := &maps.DistanceMatrixRequest{
    Language:      *language,
    DepartureTime: "now",
    ArrivalTime:   *arrivalTime,
}

下面是结果

代码语言:javascript
复制
{
    "origin_addresses": [
        "74 C. Benitez St, Quezon City, Metro Manila, Philippines"
    ],
    "destination_addresses": [
        "17 Orchard Rd, Bagumbayan, Quezon City, 1109 Metro Manila, Philippines"
    ],
    "rows": [
        {
            "elements": [
                {
                    "status": "OK",
                    "distance": {
                        "text": "8.5 km",
                        "value": 8470
                    },
                    "duration": {
                        "value": 1406,
                        "text": "23m26s"
                    },
                    "duration_in_traffic": null
                }
            ]
        }
    ]
}

我做错什么了吗?

编辑:

代码语言:javascript
复制
    r := &maps.DistanceMatrixRequest{
    Origins:       strings.Split(origins, "|"),
    Destinations:  strings.Split(destinations, "|"),
    Language:      "en",
    DepartureTime: "now",
    Mode:          maps.TravelModeDriving,
    Units:         maps.UnitsMetric,
}

resp, err := client.DistanceMatrix(context.Background(), r)
if err != nil {
    return c.JSON(http.StatusBadRequest, err)
}

return c.JSON(http.StatusOK, resp)
EN

回答 2

Stack Overflow用户

发布于 2018-08-16 02:26:26

遇到了和你一样的问题,编辑你的帖子就解决了我的问题。

为了澄清以后可能出现的人的解决方案,问题是我没有在我的请求中指定DepartureTime

如果您使用DepartureTime注释-out运行下面的代码,它会打印:

代码语言:javascript
复制
go run traffic.go 
Duration in minutes: 0.000000

但是,对于请求中指定的DepartureTime: "now",它提供:

代码语言:javascript
复制
go run traffic.go 
Duration in minutes: 135.966667

下面是完整的工作示例。

代码语言:javascript
复制
package main

import (
    "fmt"
    "log"

    "golang.org/x/net/context"
    "googlemaps.github.io/maps"
)

func main() {
    c, err := maps.NewClient(maps.WithAPIKey("my-api-key-here"))
    if err != nil {
        log.Fatalf("fatal error: %s", err)
    }
    r := &maps.DistanceMatrixRequest{
        Origins:      []string{"Newark, DE"},
        Destinations: []string{"Charles Town, WV"},
        Units:        maps.UnitsImperial,
        Language:     "en",
        // Must specify DepartureTime in order to get DurationInTraffic in response
        DepartureTime: "now",
    }
    route, err := c.DistanceMatrix(context.Background(), r)

    if err != nil {
        log.Fatalf("fatal error: %s", err)
    }

    fmt.Printf("Duration in minutes: %f\n", route.Rows[0].Elements[0].DurationInTraffic.Minutes())
}
票数 1
EN

Stack Overflow用户

发布于 2019-12-06 08:29:34

另一个潜在的问题是,如果谷歌没有流量数据,它就不会返回duration_in_traffic。

文献状态

只有当下列所有内容都为真时,才返回通信量的持续时间: 请求包括一个departure_time参数。该请求包括一个有效的API密钥,或一个有效的Google平台Premium客户端ID和签名。对于所请求的路线,交通条件可用。模式参数设置为“驱动”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51568983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档