地铁线路+电子地图

先看效果图 

 记录(*^▽^*) 智慧重庆案例 交通枢纽模块

  初始化页面

隐藏所有图层

/**
 * 隐藏所有图层
 */
const hideAllInfoTree = async () => {
    // 获取所有图层
    const infoTree = await __g.infoTree.get()
    // 获取所有图层id
    const ids = infoTree.infotree.map((item: any) => item.iD)
    // 隐藏图层
    await __g.infoTree.hide(ids)
}

 对应API

 

显示需要的图层

/**
 * 显示需要的图层
 */
const showNeedInfoTree = async () => {
    // 需要显示的图层名称
    const showArr = ['重庆市白模', '面_50']
    // 获取所有图层
    const infoTree = await __g.infoTree.get()
    // 过滤需要显示的图层id
    const ids = infoTree.infotree.filter((item: any) => showArr.includes(item.name)).map((item: any) => item.iD)
    // 显示图层
    await __g.infoTree.show(ids)
}

  对应API

准备数据

// 地铁线路对象
const subwayObj: any = {
    '1号线': {
        name: '重庆轨道交通1号线',
        color: '#e42342',
        coordinates: []
    },
    '2号线': {
        name: '重庆轨道交通2号线',
        color: '#066e33',
        coordinates: []
    },
    '3号线': {
        name: '重庆轨道交通3号线',
        color: '#033ec6',
        coordinates: []
    },
    '4号线': {
        name: '重庆轨道交通4号线',
        color: '#de7713',
        coordinates: []
    },
    '5号线': {
        name: '重庆轨道交通5号线',
        color: '#03a5e6',
        coordinates: []
    },
    '6号线': {
        name: '重庆轨道交通6号线',
        color: '#fc7598',
        coordinates: []
    },
    '9号线': {
        name: '重庆轨道交通9号线',
        color: '#93ef40',
        coordinates: []
    },
    '10号线': {
        name: '重庆轨道交通10号线',
        color: '#48266f',
        coordinates: []
    },
    环线: {
        name: '重庆轨道交通环线',
        color: '#f4b40e',
        coordinates: []
    }
}


// 地铁站
let subwayStationCoordinates: any = []

获取地铁站数据

/**
 * 获取地铁站数据
 */
const accessToSubwayStations = async () => {
    // 重置地铁站数组
    subwayStationCoordinates = []
    // 重置地铁对象的坐标数组
    for (const key in subwayObj) {
        subwayObj[key].coordinates = []
    }
    // 从geojson文件读取
    const { data: res } = await axios.get(`${window.origin}/mock/地铁站点.geojson`)
    // 地铁站数据
    res.features.forEach((item: any) => {
        subwayStationCoordinates.push({
            name: item.properties.field_1,
            coordinate: [...item.geometry.coordinates, 300]
        })
    })
    // 按地铁线路名称分类 坐标
    for (const key in subwayObj as any) {
        res.features.forEach((item: any, index: number) => {
            const reg = RegExp(key, 'i')
            if (reg.exec(item.properties.field_6)) {
                subwayObj[key].coordinates.push(item.geometry.coordinates)
            }
        })
    }
}

给地铁站打点——加mark

/**
 * 添加地铁站mark
 */
const addSubwayStation = async () => {
    const stationArr: any = []
    subwayStationCoordinates.forEach((item: any, index: number) => {
        //支持经纬度坐标和普通投影坐标两种类型
        const o = {
            id: `SubwayStation_${index}`,
            groupId: 'markerAdd',
            coordinate: item.coordinate, //坐标位置
            coordinateType: 0, //默认0是投影坐标系,也可以设置为经纬度空间坐标系值为1
            anchors: [-13, 30], //锚点,设置Marker的整体偏移,取值规则和imageSize设置的宽高有关,图片的左上角会对准标注点的坐标位置。示例设置规则:x=-imageSize.width/2,y=imageSize.height
            imageSize: [25, 30], //图片的尺寸
            hoverImageSize: [50, 50], //鼠标悬停时显示的图片尺寸
            range: [1, 1000000], //可视范围
            imagePath: `${window.origin}/img/mark/map_spot_ditie.png`, //显示图片路径
            fixedSize: true, //图片固定尺寸,取值范围:false 自适应,近大远小,true 固定尺寸,默认值:false

            text: item.name, //显示的文字
            useTextAnimation: true, //打开文字展开动画效果
            textRange: [1, 10000], //文本可视范围[近裁距离, 远裁距离]
            textOffset: [0, 0], // 文本偏移
            textBackgroundColor: [0, 0, 0, 0.5], //文本背景颜色
            fontSize: 12, //字体大小
            fontOutlineSize: 1, //字体轮廓线大小
            fontColor: Color.White, //字体颜色
            fontOutlineColor: Color.Black, //字体轮廓线颜色

            // showLine: true, //标注点下方是否显示垂直牵引线
            // lineSize: [2, 100], //垂直牵引线宽度和高度[width, height]
            // lineColor: Color.SpringGreen, //垂直牵引线颜色
            // lineOffset: [0, -1], //垂直牵引线偏移

            autoHeight: false, // 自动判断下方是否有物体
            displayMode: 2, //显示模式
            clusterByImage: true, // 聚合时是否根据图片路径分类,即当多个marker的imagePath路径参数相同时按路径对marker分类聚合
            priority: 0, //避让优先级
            occlusionCull: true //是否参与遮挡剔除
        }
        stationArr.push(o)
    })
    await __g.marker.add(stationArr)
}

   对应API

锚点(anchors) : [0,0]为当前图片的左上角的点,坐标值往右是x正轴,往上是y正轴

 

画地铁线

 需要画两种线:polygon(静态线)和beam(光流) 

const AddPoline = async (data: any) => {
    //添加相同点位的polyline和光流
    const datas: any = []
    const beams: any = []
    for (const key in data) {
        const item = data[key]
        item.coordinates.map((item: any) => {
            item[2] = 300
        })
        const obj = {
            id: `${item.name}_${key}`, //折线唯一标识id
            coordinates: item.coordinates, //构成折线的坐标点数组
            color: item.color, //折线颜色
            style: 4, //折线样式 参考样式枚举:PolylineStyle
            thickness: 30, //折线宽度
            intensity: 8, //亮度
            flowRate: 0.2, //流速
            tiling: 0, //材质贴图平铺比例
            shape: 0, //折线类型 0:直线, 1:曲线
            depthTest: false, //是否做深度检测
            coordinateType: 1
        }
        const obj2 = {
            id: `${item.name}_${key}`, //折线唯一标识id
            coordinates: item.coordinates, //构成折线的坐标点数组
            duration: 3, //光流粒子的生命周期
            thickness: 5, //光流线的宽度比例
            interval: 2.5, //光流粒子发射间隔
            velocity: 0.7, //光流粒子的速度
            color: item.color //光流的颜色
        }
        datas.push(obj)
        beams.push(obj2)
    }
    await __g.polyline.add(datas)
    await __g.beam.add(beams)
}

加载电子地图

需要将同名点转换为对应的经纬度坐标填入,生成电子地图和地形会有些许偏差(地形越大偏差可能越多) 

// 开启电子地图
    __g.settings.setMapMode(
        2,
        {
            //地图模式相关的参数,具体请参考API帮助文档
            coordType: 0, // coordType: 坐标系类型,0:经纬度;1:本地(默认值是0)
            serviceType: 4, // serviceType: 服务类型,0:MVT矢量切片; 1:WMTS(ArcGis) (默认值是0)
            mapPoint: [361424.37, 3271083], // mapPoint: 同名点,取值范围:[x,y],(默认值是[0, 0])
            longitude: 106.57, // longitude: 经度,取值范围:[0~180](默认值是0.0)
            latitude: 29.549999, // latitude: 纬度,取值范围:[0~90](默认值是0.0)
            style: 'mapbox://styles/mapbox/dark-v9', // style: 风格路径,字符串地址,(默认值是 "mapbox://styles/mapbox/streets-v10")
            groundHeight: 150, // groundHeight: 地面高度,取值范围:[0~任意数值](默认值是0.0)
            renderMode: 0, // renderMode: 渲染模式,0:正常;1:透明;2:标注;3:贴地(默认值是0)
            coordOrder: 0, // coordOrder: 坐标顺序,0: XY; 1: YX(默认值为0)
            maxLevel: 22 // axLevel: WMTS服务最大显示层级,取值范围:[0~22],默认值:10
        },
        () => {
            console.log('设置大地图模式完成')
        }

对应API 

离开页面时清除以上操作

离开页面一定要清除所有的操作!!!还原刚进页面的状态

// 还原操作
const cleanHinge = async () => {
    // 设置时间
    // __g.weather.setDateTime(2022, 10, 25, 11, 30, false)
    // 关闭电子地图
    __g.settings.setMapMode(
        0,
        {
            //地图模式相关的参数,具体请参考API帮助文档
            coordType: 0, // coordType: 坐标系类型,0:经纬度;1:本地(默认值是0)
            serviceType: 4, // serviceType: 服务类型,0:MVT矢量切片; 1:WMTS(ArcGis) (默认值是0)
            mapPoint: [361424.37, 3271083], // mapPoint: 同名点,取值范围:[x,y],(默认值是[0, 0])
            longitude: 106.57, // longitude: 经度,取值范围:[0~180](默认值是0.0)
            latitude: 29.549999, // latitude: 纬度,取值范围:[0~90](默认值是0.0)
            style: 'mapbox://styles/mapbox/dark-v9', // style: 风格路径,字符串地址,(默认值是 "mapbox://styles/mapbox/streets-v10")
            groundHeight: 150, // groundHeight: 地面高度,取值范围:[0~任意数值](默认值是0.0)
            renderMode: 0, // renderMode: 渲染模式,0:正常;1:透明;2:标注;3:贴地(默认值是0)
            coordOrder: 0, // coordOrder: 坐标顺序,0: XY; 1: YX(默认值为0)
            maxLevel: 22 // axLevel: WMTS服务最大显示层级,取值范围:[0~22],默认值:10
        },
        () => {
            console.log('设置地图模式完成')
        }
    )
    // 清除线
    await __g.polyline.clear(null)
    // 清除光流
    await __g.beam.clear(null)
    // 清除点
    await __g.marker.clear(null)
    // 清除
    await DelPoline(subwayObj)
}

整体代码

import axios from 'axios'
import { AddPoline, DelPoline } from '@/tools/PolygonLine'
import { keys } from 'lodash'

/**
 * 初始化交通枢纽
 */
const initHinge = async () => {
    subwayStationCoordinates = []
    // 设置相机位置
    __g.camera.set(361107.746094, 3283910.211406, 36068.9025, -85.998451, -162.599457, 0)
    // 开启电子地图
    __g.settings.setMapMode(
        2,
        {
            //地图模式相关的参数,具体请参考API帮助文档
            coordType: 0, // coordType: 坐标系类型,0:经纬度;1:本地(默认值是0)
            serviceType: 4, // serviceType: 服务类型,0:MVT矢量切片; 1:WMTS(ArcGis) (默认值是0)
            mapPoint: [361424.37, 3271083], // mapPoint: 同名点,取值范围:[x,y],(默认值是[0, 0])
            longitude: 106.57, // longitude: 经度,取值范围:[0~180](默认值是0.0)
            latitude: 29.549999, // latitude: 纬度,取值范围:[0~90](默认值是0.0)
            style: 'mapbox://styles/mapbox/dark-v9', // style: 风格路径,字符串地址,(默认值是 "mapbox://styles/mapbox/streets-v10")
            groundHeight: 150, // groundHeight: 地面高度,取值范围:[0~任意数值](默认值是0.0)
            renderMode: 0, // renderMode: 渲染模式,0:正常;1:透明;2:标注;3:贴地(默认值是0)
            coordOrder: 0, // coordOrder: 坐标顺序,0: XY; 1: YX(默认值为0)
            maxLevel: 22 // axLevel: WMTS服务最大显示层级,取值范围:[0~22],默认值:10
        },
        () => {
            console.log('设置大地图模式完成')
        }
    )
    // 获取地铁站点数据
    await accessToSubwayStations()
    // 添加地铁站mark
    await addSubwayStation()
    // 画线
    await addSubwayPolygon()
}

/**
 * 显示需要的图层
 */
const showNeedInfoTree = async () => {
    const showArr = ['重庆市白模', '面_50']
    const infoTree = await __g.infoTree.get()
    const ids = infoTree.infotree.filter((item: any) => showArr.includes(item.name)).map((item: any) => item.iD)
    await __g.infoTree.show(ids)
}

/**
 * 隐藏所有图层
 */
const hideAllInfoTree = async () => {
    const infoTree = await __g.infoTree.get()
    const ids = infoTree.infotree.map((item: any) => item.iD)
    await __g.infoTree.hide(ids)
}

/**
 * 添加地铁站mark
 */
const addSubwayStation = async () => {
    const stationArr: any = []
    subwayStationCoordinates.forEach((item: any, index: number) => {
        //支持经纬度坐标和普通投影坐标两种类型
        const o = {
            id: `SubwayStation_${index}`,
            groupId: 'markerAdd',
            coordinate: item.coordinate, //坐标位置
            coordinateType: 0, //默认0是投影坐标系,也可以设置为经纬度空间坐标系值为1
            anchors: [-13, 30], //锚点,设置Marker的整体偏移,取值规则和imageSize设置的宽高有关,图片的左上角会对准标注点的坐标位置。示例设置规则:x=-imageSize.width/2,y=imageSize.height
            imageSize: [25, 30], //图片的尺寸
            hoverImageSize: [50, 50], //鼠标悬停时显示的图片尺寸
            range: [1, 1000000], //可视范围
            imagePath: `${window.origin}/img/mark/map_spot_ditie.png`, //显示图片路径
            fixedSize: true, //图片固定尺寸,取值范围:false 自适应,近大远小,true 固定尺寸,默认值:false

            text: item.name, //显示的文字
            useTextAnimation: true, //打开文字展开动画效果
            textRange: [1, 10000], //文本可视范围[近裁距离, 远裁距离]
            textOffset: [0, 0], // 文本偏移
            textBackgroundColor: [0, 0, 0, 0.5], //文本背景颜色
            fontSize: 12, //字体大小
            fontOutlineSize: 1, //字体轮廓线大小
            fontColor: Color.White, //字体颜色
            fontOutlineColor: Color.Black, //字体轮廓线颜色

            // showLine: true, //标注点下方是否显示垂直牵引线
            // lineSize: [2, 100], //垂直牵引线宽度和高度[width, height]
            // lineColor: Color.SpringGreen, //垂直牵引线颜色
            // lineOffset: [0, -1], //垂直牵引线偏移

            autoHeight: false, // 自动判断下方是否有物体
            displayMode: 2, //显示模式
            clusterByImage: true, // 聚合时是否根据图片路径分类,即当多个marker的imagePath路径参数相同时按路径对marker分类聚合
            priority: 0, //避让优先级
            occlusionCull: true //是否参与遮挡剔除
        }
        stationArr.push(o)
    })
    await __g.marker.add(stationArr)
}

/**
 * 添加地铁线路
 */
const addSubwayPolygon = async () => {
    await AddPoline(subwayObj)
}

/**
 * 获取地铁站数据
 */
const accessToSubwayStations = async () => {
    // 重置地铁站数组
    subwayStationCoordinates = []
    // 重置地铁对象的坐标数组
    for (const key in subwayObj) {
        subwayObj[key].coordinates = []
    }
    // 从geojson文件读取
    const { data: res } = await axios.get(`${window.origin}/mock/地铁站点.geojson`)
    // 地铁站数据
    res.features.forEach((item: any) => {
        subwayStationCoordinates.push({
            name: item.properties.field_1,
            coordinate: [...item.geometry.coordinates, 300]
        })
    })
    // 按地铁线路名称分类 坐标
    for (const key in subwayObj as any) {
        res.features.forEach((item: any, index: number) => {
            const reg = RegExp(key, 'i')
            if (reg.exec(item.properties.field_6)) {
                subwayObj[key].coordinates.push(item.geometry.coordinates)
            }
        })
    }
}

// 地铁线路对象
const subwayObj: any = {
    '1号线': {
        name: '重庆轨道交通1号线',
        color: '#e42342',
        coordinates: []
    },
    '2号线': {
        name: '重庆轨道交通2号线',
        color: '#066e33',
        coordinates: []
    },
    '3号线': {
        name: '重庆轨道交通3号线',
        color: '#033ec6',
        coordinates: []
    },
    '4号线': {
        name: '重庆轨道交通4号线',
        color: '#de7713',
        coordinates: []
    },
    '5号线': {
        name: '重庆轨道交通5号线',
        color: '#03a5e6',
        coordinates: []
    },
    '6号线': {
        name: '重庆轨道交通6号线',
        color: '#fc7598',
        coordinates: []
    },
    '9号线': {
        name: '重庆轨道交通9号线',
        color: '#93ef40',
        coordinates: []
    },
    '10号线': {
        name: '重庆轨道交通10号线',
        color: '#48266f',
        coordinates: []
    },
    环线: {
        name: '重庆轨道交通环线',
        color: '#f4b40e',
        coordinates: []
    }
}

// 地铁站
let subwayStationCoordinates: any = []

// 还原操作
const cleanHinge = async () => {
    // 设置时间
    // __g.weather.setDateTime(2022, 10, 25, 11, 30, false)
    // 关闭电子地图
    __g.settings.setMapMode(
        0,
        {
            //地图模式相关的参数,具体请参考API帮助文档
            coordType: 0, // coordType: 坐标系类型,0:经纬度;1:本地(默认值是0)
            serviceType: 4, // serviceType: 服务类型,0:MVT矢量切片; 1:WMTS(ArcGis) (默认值是0)
            mapPoint: [361424.37, 3271083], // mapPoint: 同名点,取值范围:[x,y],(默认值是[0, 0])
            longitude: 106.57, // longitude: 经度,取值范围:[0~180](默认值是0.0)
            latitude: 29.549999, // latitude: 纬度,取值范围:[0~90](默认值是0.0)
            style: 'mapbox://styles/mapbox/dark-v9', // style: 风格路径,字符串地址,(默认值是 "mapbox://styles/mapbox/streets-v10")
            groundHeight: 150, // groundHeight: 地面高度,取值范围:[0~任意数值](默认值是0.0)
            renderMode: 0, // renderMode: 渲染模式,0:正常;1:透明;2:标注;3:贴地(默认值是0)
            coordOrder: 0, // coordOrder: 坐标顺序,0: XY; 1: YX(默认值为0)
            maxLevel: 22 // axLevel: WMTS服务最大显示层级,取值范围:[0~22],默认值:10
        },
        () => {
            console.log('设置地图模式完成')
        }
    )
    // 清除线
    await __g.polyline.clear(null)
    // 清除光流
    await __g.beam.clear(null)
    // 清除点
    await __g.marker.clear(null)
    // 清除
    await DelPoline(subwayObj)
}

export { initHinge, cleanHinge, showNeedInfoTree, hideAllInfoTree }
export const AddPoline = async (data: any) => {
    //添加相同点位的polyline和光流
    const datas: any = []
    const beams: any = []
    for (const key in data) {
        const item = data[key]
        item.coordinates.map((item: any) => {
            item[2] = 300
        })
        const obj = {
            id: `${item.name}_${key}`, //折线唯一标识id
            coordinates: item.coordinates, //构成折线的坐标点数组
            color: item.color, //折线颜色
            style: 4, //折线样式 参考样式枚举:PolylineStyle
            thickness: 30, //折线宽度
            intensity: 8, //亮度
            flowRate: 0.2, //流速
            tiling: 0, //材质贴图平铺比例
            shape: 0, //折线类型 0:直线, 1:曲线
            depthTest: false, //是否做深度检测
            coordinateType: 1
        }
        const obj2 = {
            id: `${item.name}_${key}`, //折线唯一标识id
            coordinates: item.coordinates, //构成折线的坐标点数组
            duration: 3, //光流粒子的生命周期
            thickness: 5, //光流线的宽度比例
            interval: 2.5, //光流粒子发射间隔
            velocity: 0.7, //光流粒子的速度
            color: item.color //光流的颜色
        }
        datas.push(obj)
        beams.push(obj2)
    }
    await __g.polyline.add(datas)
    await __g.beam.add(beams)
}

export const DelPoline = async (data: any) => {
    //删除相同点位的polyline和光流
    const datas: any = []
    const beams: any = []
    for (const key in data) {
        const item = data[key]
        datas.push(`${item.name}`)
        beams.push(`${item.name}_${key}`)
    }
    await __g.polyline.delete(datas)
    await __g.beam.delete(beams)
}

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Echarts 是一种基于 JavaScript 的可视化图表库,它提供了一套简单易用的 API,用于创建各种类型的图表,如折线图、柱状图、饼图等。要使用 Echarts 绘制上海市的地铁路线图,可以采取以下步骤: 1. 数据准备:首先,需要准备好上海市地铁的路线数据。这些数据可以包括每条线路的站点、站点之间的连接关系以及站点属性等信息。可以通过查询相关的公开数据或者自己整理的方式获取这些数据。 2. 安装 Echarts:在使用 Echarts 之前,需要先安装它。可以通过 npm 安装 Echarts,也可以直接下载 Echarts 的压缩包。安装完成后,可以将 Echarts 的相关文件引入到需要使用的 HTML 页面中。 3. 绘制地铁路线图:在 HTML 页面中,使用 Echarts 提供的 API 创建一个 DOM 容器,即一个用来承载地铁路线图的元素。接着,通过 JavaScript 代码,使用 Echarts 提供的配置项配置地铁路线图的各个参数,如图表类型、数据源等。可以根据自己的需求,选择合适的图表类型来展示地铁路线图,并将准备好的数据填充到图表中。 4. 样式美化和交互效果:在绘制地铁路线图的过程中,可以使用 Echarts 提供的样式配置项对图表进行美化,如调整线条颜色、设置站点标记的样式等。另外,还可以添加交互效果,如鼠标 hover 时显示站点信息、点击站点时展开扩展信息等。这些效果可以通过 Echarts 提供的事件监听和触发机制来实现。 5. 发布和部署:完成地铁路线图的绘制后,可以将 HTML 页面发布到服务器或者通过其他方式进行部署,以便其他用户可以访问和使用。可以将绘制好的地铁路线图以静态资源的形式提供给用户,也可以将其作为一个独立的组件嵌入到其他应用中。 综上所述,通过使用 Echarts,可以轻松地绘制上海市的地铁路线图,并实现各种样式和交互效果的配置,从而提供给用户一个直观、易懂、富有交互性的地铁线路信息展示方式。 ### 回答2: ECharts 是一个基于 JavaScript 的可视化库,可以用于创建各种交互式的图表和地图。我们可以使用 ECharts 来展示上海市的地铁路线图。 首先,我们需要收集上海市的地铁路线数据,包括路线名称、站点名称和站点的经纬度坐标等信息。这些数据可以从官方网站或其他第三方数据源中获取。 接下来,我们可以使用 ECharts 提供的地理坐标系来绘制地铁路线图。在地理坐标系中,我们可以根据站点的经纬度坐标来确定各个站点的位置,并使用连线来表示不同的地铁线路。 为了增加交互性,我们可以使用 ECharts 提供的工具箱来添加缩放、平移等操作,让用户可以自由地浏览地铁路线图。同时,我们可以使用 ECharts 的提示框组件,当用户鼠标悬停在某个站点上时,显示该站点的详细信息,如站点名称、线路名称等。 除了地铁路线图,我们还可以使用 ECharts 的其他功能来增强可视化效果。例如,我们可以根据地铁线路的拥挤程度,使用不同的颜色来表示不同的拥挤程度等。 最后,我们可以将绘制好的地铁路线图嵌入到 web 页面中,让用户可以在浏览器中访问和使用。 总之,通过使用 ECharts,我们可以方便地实现上海市地铁路线图的可视化展示,并且可以根据需求自定义样式和交互效果,提供更好的用户体验。 ### 回答3: ECharts 是一款优秀的数据可视化库,它可以被用来制作各种图表,包括地图。如果想要使用 ECharts 来展示上海市的地铁路线图,可以按照以下步骤进行操作。 首先,需要准备上海市地铁的相关数据。这些数据包括地铁线路的名称、站点的名称以及站点之间的连接关系。可以通过互联网上的地铁官方网站或者其他可靠数据源来获取这些数据。 然后,打开 ECharts 的官方网站,下载 ECharts 最新版的库文件。将下载的文件解压缩到你的项目文件夹中,并在你的 HTML 页面中引入相关的 CSS 和 JavaScript 文件。 接着,在 HTML 页面中创建一个容器元素,用于存放地铁路线图。给这个容器元素设置一个唯一的 id,方便在 JavaScript 中使用。 然后,使用 JavaScript 代码编写生成地铁路线图的逻辑。通过调用 ECharts 提供的 API,将地铁路线数据转换为 ECharts 所需要的格式,并传入给 ECharts 实例中。可以根据需要自定义图表的样式、交互行为等。 最后,在浏览器中打开 HTML 页面,即可看到展示上海市的地铁路线图的效果。可以通过缩放、拖拽等操作与地铁路线图进行交互,并查看地铁线路、站点等信息。 总之,通过 ECharts 可以方便地展示上海市的地铁路线图。只需要准备好地铁数据,下载并引入 ECharts 的库文件,然后使用 JavaScript 代码生成地铁路线图即可。希望这些信息对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值