刚刚开始使用示例 javascript 来简单地显示基于纬度和经度坐标的地图。我在第一行得到一个 javascript ReferenceError !
代码片段:
<script src="http://js.api.here.com/v3/3.0/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="http://js.api.here.com/v3/3.0/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
var platform = new H.service.Platform({
'app_id': 'xxxxxxxxxxxxxxxxxxxx',
'app_code': 'zzzzzzzzzzzzzzzzzzzzzzz'
});
// Obtain the default map types from the platform object
var maptypes = platform.createDefaultLayers();
// Instantiate (and display) a map object:
var map = new H.Map(document.getElementById('bodydiv'), maptypes.normal.map, {
zoom: 10, center: { lng: <%=longitude%>, lat: <%=latitude%>}
});
Run Code Online (Sandbox Code Playgroud)
浏览器控制台中的实际错误:ReferenceError: H 未定义 - 发生在 var platform=...
有任何想法吗?
我目前正在评估几个映射 API,我有一个关于 HERE 映射以及事务和请求是什么的问题。根据“计划”页面, “对于我们的大多数服务,一个事务是一个服务器请求。对于地图、卫星和交通图块,它是 15 个请求。” ,但是当我查看我的使用页面时,它说我在 9/27生成了756 个地图图块请求。这是否意味着我已经生成了 756 笔交易,还是我必须进行数学计算而我只生成了 51 笔(四舍五入)交易?
此外,我只在使用图上看到“地图瓷砖”指标。我没有看到初始交易/请求(请求启动地图)在哪里计数。这些不计算在内,只有地图图块请求计算在内吗?
非常感谢任何澄清!先感谢您!
为此,我正在使用最新的 HERE SDK。这发生在 MapEngine 初始化之前。地图显示在屏幕上。
安卓SDK版本
11-16 10:50:00.245 30879-30879 I/cr_LibraryLoader: Expected native library version number "62.0.3202.84", actual native library version number "62.0.3202.84"
11-16 10:50:00.275 30879-30879 I/cr_BrowserStartup: Initializing chromium process, singleProcess=true
11-16 10:50:00.365 30879-30879 I/art: Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.eb>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/RenderProcessGoneDetail;
11-16 10:50:00.365 30879-30879 I/art: at com.android.webview.chromium.Ap com.android.webview.chromium.WebViewChromiumFactoryProvider.G(android.webkit.WebView, android.content.Context) (WebViewChromiumFactoryProvider.java:323)
11-16 10:50:00.365 30879-30879 I/art: at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:42)
11-16 10:50:00.365 30879-30879 I/art: at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
11-16 …Run Code Online (Sandbox Code Playgroud) 我使用了HERE Maps API 的高级 Android SDK并实现了演示应用程序。但是我的应用程序大小是65 MB。
我还按如下方式shrinkResources在应用程序build.gradle文件中启用,但这对我不起作用。
android {
// Other settings
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是我们如何减少 HERE Maps API 上 Android SDK 中使用的 APK 大小。
我想在我的项目中使用 HERE 地图自动完成功能。但是当 ai 发送像文档中那样的请求时
this.axios.get('http://autocomplete.geocoder.api.here.com/6.2/suggest.json
?app_id={YOUR_APP_ID}
&app_code={YOUR_APP_CODE}
&query=Pariser+1+Berl
&beginHighlight=<b>
&endHighlight=</b>'
)
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
OPTIONS http://autocomplete.geocoder.api.here.com/6.2/suggest.json?{...} 405
Access to XMLHttpRequest at 'http://autocomplete.geocoder.api.here.com/6.2/suggest.json?{...}' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
Run Code Online (Sandbox Code Playgroud)
在网络面板的 Chrome 开发者控制台中我检查了这个
Provisional headers are shown
Access-Control-Request-Headers: x-auth-token, content-type
Access-Control-Request-Method: GET
Run Code Online (Sandbox Code Playgroud)
我将请求标头中的内容类型设置为 application/json 并更改了临时标头
to Access-Control-Request-Headers: x-auth-token
Access-Control-Request-Method: GET
Run Code Online (Sandbox Code Playgroud)
所以如果我理解正确,我应该设置 x-auth-token 标头。但是我可以在哪里拿到这个令牌呢?或者这个问题可能有其他原因?
文档中没有任何关于此类问题的信息。
在拖尾事件之后,我面临着获取此处地图中的地图边界的问题。我需要新的经纬度来在新更改的视口中获取一些项目/点。 我只想在拖动结束时获得谷歌地图 map.getBounds().getNorthEast().lat() 的替代方案。
我已经尝试过这些方法,但没有一个返回东北和西南坐标的经纬度位置。
Heremap.addEventListener('dragend', (ev) => {
const target = ev.target;
// console.log(map.getViewModel().getLookAtData().bounds);
// console.log(map.getBounds());
// console.log(target.getViewPort());
// console.log(target.getBoundingBox());
}, false);
Run Code Online (Sandbox Code Playgroud) 升级到带有矢量/WebGL 渲染的 v3.1 Javascript SDK 后,默认 UI 控件中现在没有地形层。
我查看了 API 文档,但没有明确的示例可以显示如何指定 UI 控件中显示的内容。
var platform = new H.service.Platform({
apikey: 'key'
});
var layers = platform.createDefaultLayers();
var hereMap = new H.Map(
document.getElementById(mapCanvasDiv),
defaultLayers.vector.normal.map,
{
zoom: mapOptions.zoom,
center: mapOptions.center
});
var ui = H.ui.UI.createDefault(hereMap, defaultLayers);
// Guessing I can change "ui" in some way to include the terrain layer which is a raster layer.
hereMap.UIControls = ui;
Run Code Online (Sandbox Code Playgroud)
我想在 UI 控件中有 Normal、Terrain 和 Satellite 层,就像我们在 v3.0 上一样,因为我们的一些客户使用了这个层。
我在Angular上使用openlayers来显示带有here-api作为地图图块提供程序的地图。Openlayers 6.1.1 Angular 8.0.0
但是,当页面加载时,地图不会填满整个宽度。
这发生在适用于 Windows (PC) 的 Edge 和 Chrome 以及 Android 的 Chrome 上。
在 Windows 中,只有在调整浏览器窗口大小时,地图才会使用整个宽度。
在 Android 中,当地图从视图中滚动出来并重新回到视图中时,宽度会被填充。
下面的屏幕截图演示了调整浏览器大小之前和之后地图的外观。
初始显示上的部分宽度图
调整窗口大小后地图使用全宽
我的 Angular 组件映射配置如下所示:
addCommonProjections();
this.source = new XYZ({
url: 'https://{1-4}.base.maps.ls.hereapi.com' +
'/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/512/png?apiKey=someApiKey',
attributions: 'Map Tiles © ' + new Date().getFullYear() + ' developer.here.com'
});
this.layer = new TileLayer({
source: this.source
});
this.view = new View({
center: fromLonLat([this.property.longitude, this.property.latitude ]),
zoom: 16
});
this.map = new Map({
target: …Run Code Online (Sandbox Code Playgroud) 这是我的 cURL 请求
curl https://geocode.search.hereapi.com/v1/geocode?q=5%20Rue%20Daunou%2C%2075000%20Paris%2C%20France -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXX"
Run Code Online (Sandbox Code Playgroud)
这是回应
{"error":"Unauthorized","error_description":"Token Validation Failure - unrecognized kid null"}
Run Code Online (Sandbox Code Playgroud)
我不确定发生了什么。我尝试了不同的访问密钥。我生成了新的。但不断收到同样的错误。
https://developer.here.com/documentation/geocoder/dev_guide/topics/coverage-geocoder.html上声明了 7 位数字,但只返回了 5 位数字。
https://en.wikipedia.org/wiki/Postal_codes_in_Israel声称 5 位邮政编码已于 2013 年逐步淘汰。因此包裹承运商需要 7 位邮政编码。
我们能否期望 HERE.com 地理编码服务在不久的将来更新为 7 位数邮政编码?如果没有,开发指南的期望应该更新以符合现实。
here-api ×10
android ×2
javascript ×2
angular ×1
curl ×1
flexbox ×1
kotlin ×1
maps ×1
openlayers ×1
openlayers-6 ×1
rest ×1
sdk ×1