在 Angular 项目中为 OpenLayers 地图实施地理编码器服务

Implementing geocoder service for OpenLayers map in Angular project

我正在从事一个 Angular 项目,其中一部分涉及在给定地址上显示带有标记的地图。我想使用这里的地理编码(和反向)服务,我遵循了这里的所有说明:

https://developer.here.com/blog/using-the-here-geocoder-api-for-javascript-in-an-angular-application

问题是此请求需要 "app id" 和 "app code" 进行身份验证。我在 Here 的网站上发现不再提供 "app code" 进行身份验证,只有 API 密钥和 OAuth 令牌(我有),以提高安全性。在使用 apikey 代替 "app code" 时,它会响应错误 "credentials invalid for app-id",这是可以理解的。我无法找到此服务平台对象的文档,我可以在其中找到使用 API 键的方法。有什么建议么?如果我解决了身份验证问题,我很确定这会正常工作。

有关项目的更多上下文,我确实对要使用的地图服务 (OpenLayers) 有限制,但对第三方地理编码器服务没有限制。 npm 上有一些可用的地理编码库,但它们都已过时或不起作用。我唯一的最后一招是为另一个外部地理编码 API(我有适当的凭据)制作我自己的 Http 请求-响应服务——我目前也在做这件事,但它需要时间,因为我是新手至 Angular。我只是想确保在从头开始设置之前,我已经尝试了所有其他可用服务。请帮忙!

我认为只需进行一些更改,您就可以开始了。

  1. 将API的版本更新到3.1,只需修改index.html中的库url即可。

来自

<script src="https://js.api.here.com/v3/3.0/mapsjs-core.js"
    type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.0/mapsjs-service.js"
    type="text/javascript" charset="utf-8"></script>

<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"
    type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"
    type="text/javascript" charset="utf-8"></script>
  1. 更新平台初始化参数,可以通过修改HereService构造函数来实现。

来自

this.platform = new H.service.Platform({
    "app_id": "APP-ID-HERE",
    "app_code": "APP-CODE-HERE"
});

this.platform = new H.service.Platform({
  'apikey': '{YOUR_API_KEY}'
});

应该可以。