AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79310028
Accepted
MacW
MacW
Asked: 2024-12-27 01:10:03 +0800 CST2024-12-27 01:10:03 +0800 CST 2024-12-27 01:10:03 +0800 CST

带有“最近”API 关键字的 OpenLayers 和 HERE Maps 不再起作用

  • 772

我正在使用 OpenLayers 6.11 这个小项目多年来成功访问 OpenStreetMap、CyclOSM、Bing 和 HERE Maps。

最近,一些用户报告说他们无法使用 HERE 地图。我尝试时它运行正常。然后我发现有问题的用户最近获得了 HERE 地图 API 密钥。

于是我获得了一个新的 API 密钥,而事实上,HERE Maps 不再在 OpenLayers 中工作。对于每个图块请求,HERE 都会返回 HTTP 429 Too Many Requests。切换回我的旧 API 密钥后,一切又恢复正常。

有人遇到过这种情况吗?是不是因为我使用的是旧版本的 OpenLayers(6.11)?

我使用端点

https://{1-4}.${ld.base}.maps.api.here.com/${ld.type}/2.1/maptile/newest/

官方 OpenLayers 示例也使用了它。ld.base 和 ld.type 动态选择地图类型。

我希望 OpenLayers 能够与 HERE Maps 一起工作,无论 API 密钥的生成时间如何。

openlayers
  • 2 2 个回答
  • 37 Views

2 个回答

  • Voted
  1. Best Answer
    Mike
    2024-12-27T04:02:50+08:002024-12-27T04:02:50+08:00

    每秒可能有 30 个图块请求的限制https://www.here.com/get-started/pricing/limited-plan-restrictions 全屏地图很容易打破这一限制,尤其是 256 像素图块和preload选项。

    端点也已过时,最好使用https://www.here.com/docs/bundle/raster-tile-api-developer-guide/page/topics/styles.html中的最新文档,并在 OpenLayers 中使用 512tileSize选项并平铺请求https://www.here.com/docs/bundle/raster-tile-api-developer-guide/page/topics/examples/example-size.html,这将减少 75% 的请求,并preload从 OpenLayers 中删除该选项,以避免进一步不必要的平铺请求。

    • 0
  2. MacW
    2024-12-28T17:50:06+08:002024-12-28T17:50:06+08:00

    根据@Mike 提供的信息,我能够再次完成这项工作。需要进行一些更改,以防其他人遇到同样的问题。

    更改地图图块 URL

    https://{1-4}.base.maps.ls.hereapi.com/$maptile/2.1/maptile/newest/$normal.day/{z}/{x}/{y}/256/png?apiKey=${YOUR_KEY}&lg=eng

    必须改变 改为

    https://maps.hereapi.com/v3/base/mc/{z}/{x}/{y}/png?size=512&apiKey=${YOUR_KEY}&style=explore.day&lang=en

    • 使用 512x512px 的图块
    • 瓷砖样式现在通过单独的style参数提供
    • 样式名称已更改,例如从normal.day更改为explore.day
    • 语言参数已从 更改为lg并lang使用双字母代码 (en) 代替三字母代码 (eng)

    构造源时添加 TileSize 参数

    source: new ol.source.XYZ({
      tileSize: [512,512],
      url: `https://maps.hereapi.com/v3...
      ...
    

    所以 OpenLayers 知道我们使用 512 像素图块。

    旧钥匙与新钥匙

    用户多年前创建的 API 密钥仍可在新版 API 中使用。但最近获取的新密钥仅适用于最新版 API。

    限制

    新密钥的每日免费请求量已大幅减少。即使您只是在测试,现在也会很快遇到“请求过多”错误。在您的帐户中添加信用卡或 Paypal 将使每日免费请求量再次增加到可用水平。

    • 0

相关问题

  • 在 Openlayers 中获取 XYZ 源的中心(或范围)

  • 如何在点击时更新标记位置?

  • 从已弃用的带有 tileUrlFunction 的 XYZ 迁移到带有 tileLoadFunction 的 TileImage

  • 当两个子多边形共享边或顶点时,使用 Openlayers 修改多多边形

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    为什么这个简单而小的 Java 代码在所有 Graal JVM 上的运行速度都快 30 倍,但在任何 Oracle JVM 上却不行?

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    何时应使用 std::inplace_vector 而不是 std::vector?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Martin Hope
    Aleksandr Dubinsky 为什么 InetAddress 上的 switch 模式匹配会失败,并出现“未涵盖所有可能的输入值”? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge 为什么这个简单而小的 Java 代码在所有 Graal JVM 上的运行速度都快 30 倍,但在任何 Oracle JVM 上却不行? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini 具有指定基础类型但没有枚举器的“枚举类”的用途是什么? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer 何时应使用 std::inplace_vector 而不是 std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB 为什么 GCC 生成有条件执行 SIMD 实现的代码? 2024-02-17 06:17:14 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve