Here api 使用此处贴图将样式添加到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',

我正在使用Here maps js从下面的数组加载几个KML文件。下面,KMLOBJ包含KML文件的路径、我希望多段线的颜色以及它们的不透明度

当前,每个文件渲染蓝色多段线。这必须是默认值

有没有一种方法可以让我从KML文件中动态设置多段线的样式

   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);

    }
});