有人知道如何here.com从我的网站创建一个正确的 URL 来链接到地图吗?我们使用大量 API 调用将地图嵌入到我们的网站中,但我想向人们发送电子邮件,其中包含'Click Here for directions'指向here.com行车路线的链接,其中包含 URL 中内置的地址或坐标。
例子:
使用谷歌地图,我们要做的就是创建一个简单的链接,如下所示:
https://www.google.com/maps?saddr=32.5589671,-97.2586011&daddr=32.7787855,-97.4495476
Run Code Online (Sandbox Code Playgroud)
只需传递变量saddr和daddrURL 内。我已经尝试了一切为here.com地图构建正确的 URL ,但它没有正确处理它。
我最好的尝试是:
https://www.here.com/directions/drive/32.2589671,-97.4486011/Weatherford,_Texas?x=ep&map=30.38114,-89.89326,6,normal
Run Code Online (Sandbox Code Playgroud)
但是它没有正确处理这个 URL,现在我几乎被卡住了,因为我已经尝试了所有我知道的尝试。
我正在尝试在 Swift 中使用 Here API 创建路由,但我遇到了一些问题,因为从未调用完成块,所以我无法确切知道问题出在哪里。这是我的代码:
let coreRoute = NMACoreRouter()
let startPoint = NMAGeoCoordinates(latitude: latitude1, longitude: longitude1)
let waypoint1 = NMAWaypoint(geoCoordinates: startPoint)
let middlePoint = NMAGeoCoordinates(latitude: latitude2, longitude: longitude2)
let waypoint2 = NMAWaypoint(geoCoordinates: middlePoint, waypointType: NMAWaypointType.ViaWaypoint)
let endPoint = NMAGeoCoordinates(latitude: latitude3, longitude: longitude3)
let waypoint3 = NMAWaypoint(geoCoordinates: endPoint, waypointType: NMAWaypointType.StopWaypoint)
let stopList = [waypoint1, waypoint2, waypoint3] // I have also tried adding the NMAGeoCoordinates to array but still no callback
let routingMode = NMARoutingMode(routingType: NMARoutingType.Fastest, transportMode: NMATransportMode.Car, routingOptions: 0)
coreRoute.calculateRouteWithStops(stopList, …Run Code Online (Sandbox Code Playgroud) 我在一个角度应用程序中实现了 heremaps 并使用它来使用 wkhtmltopdf 打印 PDF,问题是我需要有一个可靠的事件来监听,以便通知 wkhtmltopdf 我的地图已完全加载并准备好打印。特别是在打印 PDF 时,某些图块要么未加载,要么仍处于模糊状态。
我试图收听该mapviewchangeend事件,但它不会在图块加载时引发。我也试过听render渲染引擎的事件,但是每次加载一个图块时都会抛出一个事件,我不知道我应该等待多少个图块
// add a listener on the map ready event
this.map.getEngine().addEventListener("render", (event: H.util.Event) => {
if (this.map.getEngine() === event.target) {
map.mapReadyAction();
}
});
Run Code Online (Sandbox Code Playgroud)
有没有一种可靠的方法可以知道我的地图图块何时已完全加载并准备好打印?
编辑:使用评论中链接的帖子,我找到了一种可靠地计算已加载图块数量的方法。不幸的是,我找不到确定我的地图需要加载的图块总数的方法(getTileNumber()在代码中)
this.nbLoadedTiles = 0;
this.map
.getBaseLayer()
.getProvider()
.addEventListener("update", () => {
this.nbLoadedTiles++;
console.log(`tile loaded : ${this.nbLoadedTiles}`);
if (this.nbLoadedTiles === this.getTileNumber()) {
console.log("All tiles loaded");
map.mapReadyAction();
this.nbLoadedTiles = 0;
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢 !
刚刚开始使用示例 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=...
有任何想法吗?
我想在我的项目中使用 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) 我对 Here Maps Routing API v8 非常陌生。
我已经尝试过此处提供的示例: https: //developer.here.com/documentation/maps/3.1.15.1/dev_guide/topics/routing.html
我使用的路由参数如下所示:
var routingParameters = {
'routingMode': 'fast',
'transportMode': 'car',
'origin': '50.1120,8.6834',
'destination': '52.5309,13.3846',
'return': 'polyline'
};
Run Code Online (Sandbox Code Playgroud)
现在我想在routingParameters中添加多个航路点,并且我尝试了以下格式:
'via' : ['50.1234,8.7654', '51.2234,9.1123']
但是当我在路由参数中使用上述行时,请求失败。
您能否建议具有多个航点的请求的正确格式?
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
javascript ×3
angular ×1
flexbox ×1
here-ios ×1
ios ×1
maps ×1
openlayers ×1
openlayers-6 ×1
swift ×1