[英]How to setup HERE Base Map Tiles API for HERE Javascript API?
我為我的Web應用程序成功實現了HERE Javascript API。 我想簡化地圖的顯示方式,因此首先嘗試創建本指南中介紹的自己的地圖樣式。
給出的示例可以正常工作,但我無法根據需要進行調整而不會出現故障(我認為縮進是問題所在,盡管經過數小時的嘗試,但仍無法驗證)。 我找不到任何“地圖樣式文件生成器”,所以我幾乎放棄了,直到找到這些:
不幸的是,這些答案中的給定代碼不起作用:
//Instead of using the default layers...
//var defaultLayers = platform.createDefaultLayers();
//...create your own layer (with e.g. the "reduced" scheme
var reduced = platform.getMapTileService({
type: 'base'
}).createTileLayer("maptile", "reduced.day", 256, "png8");
//Initialize a map using your custom map tile layer
var map = new H.Map(document.getElementById('mapp'), reduced, {
center: {
lat: 52.3,
lng: 13.8
},
zoom: 10
});
而defaultLayers.vector.normal.map
和reduced
對象似乎是同一類對象,使用defaultLayers為我提供默認映射,而使用簡化的Layout為我提供一個空白映射,控制台上沒有錯誤,但那些GET類型為Errors :
mapsjs-core.js:33 GET https://1.base.hereapi.com/maptile/2.1/info?xnlp=CL_JSMv3.1.0.3&apikey=[My credentials]&output=json net::ERR_NAME_NOT_RESOLVED
d @ mapsjs-core.js:33
ic @ mapsjs-core.js:34
application/json @ mapsjs-core.js:70
af.yj @ mapsjs-core.js:69
(anonymous) @ mapsjs-core.js:44
(anonymous) @ mapsjs-core.js:44
zj @ mapsjs-core.js:44
add @ mapsjs-core.js:44
rd @ mapsjs-core.js:43
af @ mapsjs-core.js:69
n.ga @ VM2398:15
n.hh @ VM2398:18
tn @ VM2398:14
T.vb @ VM2398:14
T.th @ VM2398:20
(anonymous) @ script.js:60
以下是我完整的代碼:
///### Credentials
// Identification service, this key only work on present domain.
var platform = new H.service.Platform({
'apikey': '[Well .. my credentials]'
});
///### Map setup
//...create your own layer (with e.g. the "reduced" scheme
var reduced = platform.getMapTileService({
type: 'base'
}).createTileLayer("maptile", "reduced.day", 256, "png8");
//Step 2: initialize a map using your custom map tile layer
var map = new H.Map(document.getElementById('map'), reduced, {
center: {
lat: 52.3,
lng: 13.8
},
zoom: 10
});
///### Map Interaction
// Add a resize listener to make sure that the map occupies the whole container
window.addEventListener('resize', () => map.getViewPort().resize());
// Set the map interactive
// Behavior implements default interactions for pan/zoom (also on mobile touch environments)
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
// Create the default UI:
var ui = H.ui.UI.createDefault(map, defaultLayers ,'es-ES');
也許獲取地圖圖塊的聲明已更改?
我只是使您的源代碼起作用。 希望有幫助!
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0,
width=device-width" />
<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>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"
type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" type="text/css"
href="https://js.api.here.com/v3/3.1/mapsjs-ui.css" />
</head>
<body>
<div style="width: 640px; height: 480px" id="mapContainer"></div>
<script type="text/javascript" charset="utf-8">
var style = `
sources:
omv:
type: OMV
max_zoom: 17
min_display_zoom: 1
scene:
background:
color: [1.000, 1.000, 1.000, 1.00]
layers:
water_areas:
data: {source: omv, layer: water}
draw:
polygons:
order: 1 # z-order of the layer
color: [0.055, 0.604, 0.914, 1.00]
road:
data: {source: omv, layer: roads}
draw:
lines:
order: 2
color: [0.561, 0.561, 0.561, 1.00]
width: 15
major_road:
filter:
kind: 'major_road'
draw:
lines:
color: [0.882, 0.553, 0.086, 1.00]
width: 5px
`;
//Initialize the Platform object:
var platform = new H.service.Platform({
'apikey': 'APIKEY'
});
// Get the default map types from the Platform object:
var defaultLayers = platform.createDefaultLayers();
// Instantiate the map:
var map = new H.Map(
document.getElementById('mapContainer'),
defaultLayers.vector.normal.map,
{
zoom: 10,
center: { lng: 13.8, lat: 52.3 }
});
var baseLayer = map.getBaseLayer();
baseLayer.getProvider().setStyle(new H.map.Style(style));
</script>
</body>
</html>
您應該使用js版本3.0而不是3.1來使代碼正常工作,這樣對您有用嗎?
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<link rel="stylesheet" type="text/css" href="https://js.api.here.com/v3/3.0/mapsjs-ui.css?dp-version=1533195059" />
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-core.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-service.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-ui.js"></script>
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-mapevents.js"></script>
</head>
<body>
<div id="map" style="position:absolute; width:100%; height:100%; background:grey" ></div>
<!--<div id="panel" style="position:absolute; width:49%; left:51%; height:100%; background:inherit" ></div>-->
<script type="text/javascript" charset="UTF-8" >
//Step 1: initialize communication with the platform
var platform = new H.service.Platform({
app_id: 'DemoAppId01082013GAL',
app_code: 'AJKnXv84fjrb0KIHawS0Tg',
useCIT: true
});
//Instead of using the default layers...
//var defaultLayers = platform.createDefaultLayers();
//...create your own layer (with e.g. the "reduced" scheme
var reduced = platform.getMapTileService({
type: 'base'
}).createTileLayer("maptile", "reduced.day", 256, "png8");
//Step 2: initialize a map using your custom map tile layer
var map = new H.Map(document.getElementById('map'), reduced, {
center: {
lat: 52.3,
lng: 13.8
},
zoom: 10
});
//Step 3: make the map interactive
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
</script>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.