Source: ext/layer/EasyRoadLayer.js

import * as maptalks from "../../libs/maptalks";
import EasyLayer from "./EasyLayer";
import axios from "../../libs/axios/axios";
import Tool from "../tool/index";
/**
 * 路况图层类
 */
class EasyRoadLayer extends EasyLayer {
    /**
     * 构造函数
     * @constructor
     * @param {Object} options 图层配置项
     */
    constructor(options) {
        super();
        this.layer = new maptalks.VectorLayer("road_layer", options);
        this.getRoadData();
    }
    /**
     *获取(更新)当前路况数据
     *
     * @memberof EasyRoadLayer
     */
    getRoadData() {
        axios
            .get("../src/ext/layer/geoJson_demo.json")
            .then((response) => {
                let lineArr = new Tool().createFeatureFromGeoJson(
                    response.data.data
                );
                this.addGeometry(lineArr);
                for (let i = 0; i < lineArr.length; i++) {
                    if (lineArr[i].type === "LineString") {
                        lineArr[i]._geometry.properties.cunt = i;
                        this.layer.setStyle({
                            filter: ["==", "cunt", i],
                            symbol: this.getSymbol(
                                lineArr[i]._geometry.properties
                            ),
                        });
                    }
                }
            })
            .catch((error) => {
                console.log(error);
            });
    }

    /**
     *处理线样式
     *
     * @param {*} properties
     * @return {*} 
     * @memberof EasyRoadLayer
     */
    getSymbol(properties) {
        return [
            {
                lineColor: properties.stroke,
                lineWidth: properties.strokeWidth,
                lineOpacity: properties.strokeOpacity,
            },
        ];
    }
}

export default EasyRoadLayer;