Here api 使用此处贴图将样式添加到KML图层
我正在使用Here maps js从下面的数组加载几个KML文件。下面,KMLOBJ包含KML文件的路径、我希望多段线的颜色以及它们的不透明度 当前,每个文件渲染蓝色多段线。这必须是默认值 有没有一种方法可以让我从KML文件中动态设置多段线的样式Here api 使用此处贴图将样式添加到KML图层,here-api,Here Api,我正在使用Here maps js从下面的数组加载几个KML文件。下面,KMLOBJ包含KML文件的路径、我希望多段线的颜色以及它们的不透明度 当前,每个文件渲染蓝色多段线。这必须是默认值 有没有一种方法可以让我从KML文件中动态设置多段线的样式 var dataSet = [ new KmlObj('./kml/footway.kml', 'green', 100), new KmlObj('./kml/path.kml', 'red',
var dataSet = [
new KmlObj('./kml/footway.kml', 'green', 100),
new KmlObj('./kml/path.kml', 'red', 100),
new KmlObj('./kml/track_central.kml', 'black', 50),
new KmlObj('./kml/track_north_2.kml', 'black', 50),
new KmlObj('./kml/track_northeast1.kml', 'black', 50),
new KmlObj('./kml/track_northeast2.kml', 'black', 50),
new KmlObj('./kml/track_south.kml', 'black', 50),
new KmlObj('./kml/track_southeast.kml', 'black', 50),
]
function loadKmlLayer() {
dataSet.forEach(set => {
var reader = new H.data.kml.Reader(set.path);
reader.parse();
layer = reader.getLayer();
// ADD STYLING TO THE LAYER BEFORE IT'S ADDED TO THE MAP ?
map.addLayer(layer);
loadKmlLayer();
试试这个:
// create a group to put all objects
kmlGroup = new H.map.Group();
map.addObject(kmlGroup);
然后读取kml文件,准备就绪后,执行以下处理:
let reader = new H.data.kml.Reader('file to read.kml');
reader.parse();
reader.addEventListener('statechange', async function () {
// Wait till the KML document is fully loaded and parsed
if (this.getState() === H.data.AbstractReader.State.READY) {
// get all parsed objects
var objects = reader.getParsedObjects();
// if first object is a group
if (objects[0] instanceof H.map.Group)
objects = objects[0];
// iterate through each object
objects.forEach((obj, i, group) => {
if (obj instanceof H.map.Marker) {
// process points
} else if (obj instanceof H.map.Polygon) {
// light red filling with yellow border
obj.setStyle({
strokeColor: 'rgba(255, 255, 0, 1)',
fillColor: 'rgba(255, 0, 0, 0.4)',
lineWidth: 2
});
kmlGroup.addObject(obj);
} else if (obj instanceof H.map.Polyline) {
obj.setStyle({
strokeColor: 'rgba(0, 185, 100, 1)'
});
} else console.log("obj type", obj.type);
}, true, this);
}
});
试试这个:
// create a group to put all objects
kmlGroup = new H.map.Group();
map.addObject(kmlGroup);
然后读取kml文件,准备就绪后,执行以下处理:
let reader = new H.data.kml.Reader('file to read.kml');
reader.parse();
reader.addEventListener('statechange', async function () {
// Wait till the KML document is fully loaded and parsed
if (this.getState() === H.data.AbstractReader.State.READY) {
// get all parsed objects
var objects = reader.getParsedObjects();
// if first object is a group
if (objects[0] instanceof H.map.Group)
objects = objects[0];
// iterate through each object
objects.forEach((obj, i, group) => {
if (obj instanceof H.map.Marker) {
// process points
} else if (obj instanceof H.map.Polygon) {
// light red filling with yellow border
obj.setStyle({
strokeColor: 'rgba(255, 255, 0, 1)',
fillColor: 'rgba(255, 0, 0, 0.4)',
lineWidth: 2
});
kmlGroup.addObject(obj);
} else if (obj instanceof H.map.Polyline) {
obj.setStyle({
strokeColor: 'rgba(0, 185, 100, 1)'
});
} else console.log("obj type", obj.type);
}, true, this);
}
});