【问题标题】:Google Maps Static API: Error 413 (Request Entity Too Large) [duplicate]Google Maps Static API:错误 413(请求实体太大)[重复]
【发布时间】:2021-07-20 07:54:58
【问题描述】:

我尝试发送GET 请求到

https://maps.googleapis.com/maps/api/staticmap?key=***&center=443.665751,-79.403373&zoom=12&size=800x600&path=color:0xFF0000AA|weight:1|fillcolor:0xFFB6C1BB|enc:...  

整个 URL 大小为 272532 字节。但是当我发送这个请求时,我收到Error 413 (Request Entity Too Large) 错误消息:

Your client issued a request that was too large.

有没有办法向 Google Maps Static API 发送大请求(当 path 参数很长时)?

【问题讨论】:

    标签: google-maps google-maps-api-3


    【解决方案1】:

    您可以在URL request 中使用Encoded Polyline 作为path 参数。您可以通过encode()PolyUtilMaps SDK Utility Libraryencode() 方法对折线进行编码。您还可以通过PolyUtil 类的simplify() 方法减少路径中的点数(它实现了Ramer–Douglas–Peucker algorithm)。所以path 的“最大压缩”是:

    1. 使用simplify()减少路径中的点数;

    2. 使用encode()减少URL请求的path参数长度。

    此外,您可以使用路径部分创建多个请求并“合并”响应图像(作为位图)以创建完整路径(例如 this way)。

    【讨论】:

    • Javascript API 通过Geometry library 具有编码功能。
    • @MrUpsidown 你是对的。两种算法都可以手动实现。
    • 是的,我只是不明白你为什么链接到 Android SDK,因为问题没有提到 Android,而是提到了 JS API 标签。
    • @MrUpsidown 这只是因为最初可能这些问题被[android] 标记。但似乎答案可以应用于任何平台。
    • @AndriiOmelchenko 我已经在使用 encode 方法,您可以在 path 中看到 enc: 参数,但请求仍然如此之大,以至于 Google 不允许这样做。我也尝试了simplify 方法,但它并没有减少多少分数,我仍然有原来的问题!
    猜你喜欢
    • 1970-01-01
    • 2018-05-20
    • 2019-08-08
    • 2018-08-20
    • 2016-02-01
    • 1970-01-01
    • 2016-11-24
    • 2020-05-04
    相关资源
    最近更新 更多