Echarts公交路线

效果图:

安装:

安装echarts:
cnpm install echarts // 或者指定版本echarts@5.4.3

安装jQuery:
cnpm install jquery // 或者指定版本jquery@3.7.1

配置代理:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    // port: 80,
    // host: '0.0.0.0',
    proxy: {
      // 代理
      '/api': {
        target: 'https://echarts.apache.org/examples',
        changeOrigin: true,
        pathRewrite: { // 路径重写
          '^/api': '' // 选择忽略拦截器里面的内容
        }
      }
    }
  }
})

对应vue的代码:

<template>
  <div id="main" style="width: 100vw;height: 100vh;">
  </div>
</template>

<script>
import * as echarts from 'echarts'
import 'echarts/extension/bmap/bmap'
import $ from 'jquery'
export default {
  name: 'my-earth',
  mounted () {
    this.initEchart()
  },
  methods: {
    initEchart () {
      // eslint-disable-next-line no-unused-vars
      const app = {}
      const chartDom = document.getElementById('main')
      const myChart = echarts.init(chartDom)
      let option
      $.get('/api/data/asset/data/lines-bus.json', function (data) {
        const hStep = 300 / (data.length - 1)
        const busLines = [].concat.apply(
          [],
          data.map(function (busLine, idx) {
            let prevPt = []
            const points = []
            for (let i = 0; i < busLine.length; i += 2) {
              let pt = [busLine[i], busLine[i + 1]]
              if (i > 0) {
                pt = [prevPt[0] + pt[0], prevPt[1] + pt[1]]
              }
              prevPt = pt
              points.push([pt[0] / 1e4, pt[1] / 1e4])
            }
            return {
              coords: points,
              lineStyle: {
                normal: {
                  color: echarts.color.modifyHSL('#5A94DF', Math.round(hStep * idx))
                }
              }
            }
          })
        )
        myChart.setOption(
          (option = {
            bmap: {
              center: [116.46, 39.92],
              zoom: 10,
              roam: true,
              mapStyle: {
                styleJson: [
                  {
                    featureType: 'water',
                    elementType: 'all',
                    stylers: {
                      color: '#031628'
                    }
                  },
                  {
                    featureType: 'land',
                    elementType: 'geometry',
                    stylers: {
                      color: '#000102'
                    }
                  },
                  {
                    featureType: 'highway',
                    elementType: 'all',
                    stylers: {
                      visibility: 'off'
                    }
                  },
                  {
                    featureType: 'arterial',
                    elementType: 'geometry.fill',
                    stylers: {
                      color: '#000000'
                    }
                  },
                  {
                    featureType: 'arterial',
                    elementType: 'geometry.stroke',
                    stylers: {
                      color: '#0b3d51'
                    }
                  },
                  {
                    featureType: 'local',
                    elementType: 'geometry',
                    stylers: {
                      color: '#000000'
                    }
                  },
                  {
                    featureType: 'railway',
                    elementType: 'geometry.fill',
                    stylers: {
                      color: '#000000'
                    }
                  },
                  {
                    featureType: 'railway',
                    elementType: 'geometry.stroke',
                    stylers: {
                      color: '#08304b'
                    }
                  },
                  {
                    featureType: 'subway',
                    elementType: 'geometry',
                    stylers: {
                      lightness: -70
                    }
                  },
                  {
                    featureType: 'building',
                    elementType: 'geometry.fill',
                    stylers: {
                      color: '#000000'
                    }
                  },
                  {
                    featureType: 'all',
                    elementType: 'labels.text.fill',
                    stylers: {
                      color: '#857f7f'
                    }
                  },
                  {
                    featureType: 'all',
                    elementType: 'labels.text.stroke',
                    stylers: {
                      color: '#000000'
                    }
                  },
                  {
                    featureType: 'building',
                    elementType: 'geometry',
                    stylers: {
                      color: '#022338'
                    }
                  },
                  {
                    featureType: 'green',
                    elementType: 'geometry',
                    stylers: {
                      color: '#062032'
                    }
                  },
                  {
                    featureType: 'boundary',
                    elementType: 'all',
                    stylers: {
                      color: '#465b6c'
                    }
                  },
                  {
                    featureType: 'manmade',
                    elementType: 'all',
                    stylers: {
                      color: '#022338'
                    }
                  },
                  {
                    featureType: 'label',
                    elementType: 'all',
                    stylers: {
                      visibility: 'off'
                    }
                  }
                ]
              }
            },
            series: [
              {
                type: 'lines',
                coordinateSystem: 'bmap',
                polyline: true,
                data: busLines,
                silent: true,
                lineStyle: {
                  // color: '#c23531',
                  // color: 'rgb(200, 35, 45)',
                  opacity: 0.2,
                  width: 1
                },
                progressiveThreshold: 500,
                progressive: 200
              },
              {
                type: 'lines',
                coordinateSystem: 'bmap',
                polyline: true,
                data: busLines,
                lineStyle: {
                  width: 0
                },
                effect: {
                  constantSpeed: 20,
                  show: true,
                  trailLength: 0.1,
                  symbolSize: 1.5
                },
                zlevel: 1
              }
            ]
          })
        )
      })

      option && myChart.setOption(option)
    }
  }
}
</script>

<style lang="scss" scoped>

</style>

注意:

此dome需要用百度在百度申请一个ak也就是秘钥,然后放在public的html文件当中,并且注意一点就是注意api?v=3.0,如果用百度的1.0是出不来的

<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=你的ak"></script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值