mapv+openlayers+vue 面

83 阅读1分钟

image.png

mapBaseUrl:是我自己的网关地址
json文件可以来https://datav.aliyun.com/portal/school/atlas/area_selector这个地方取
<template>
  <div id="supermap" ref="supermap" class="supermap" style="height: 100vh; width: 100vw; margin: 0 14px 0 10px"></div>
</template>
<script>
import { Map, View } from 'ol'
import TileLayer from 'ol/layer/Tile'
import { Image as ImageLayer } from 'ol/layer'
import { TileSuperMapRest } from '@supermap/iclient-ol'
import { Mapv } from '@supermap/iclient-ol/overlay/Mapv'
import * as mapv from 'mapv'

export default {
  name: 'dashboard',

  computed: {
    mapBaseUrl() {
      return this.$params?.SUPER_MAP_URL || ''
    }
  },

  mounted() {
    var url = this.mapBaseUrl + 'iserver/services/map-china400/rest/maps/ChinaDark?prjCoordSys={epsgcode:4326}'
    var map = new Map({
      target: 'supermap',
      view: new View({
        center: [113.28, 22.65],
        zoom: 8,
        projection: 'EPSG:4326',
        multiWorld: true
      }),
      layers: [
        new TileLayer({
          source: new TileSuperMapRest({
            url: url,
            prjCoordSys: { epsgCode: 4326 }
          }),
          projection: 'EPSG:4326'
        })
      ]
    })

    const geojson = require('./modules/map/json/guangdong.json')
    var dataSet1 = mapv.geojson.getDataSet(geojson)
    var citys = {
      深圳市: 20,
      广州市: 40,
      佛山市: 60,
      江门市: 80,
      中山市: 100
    }
    var data1 = dataSet1.get({
      filter: function (item) {
        if (!citys[item.name]) {
          return false
        }

        item.count = citys[item.name]
        return true
      }
    })
    dataSet1 = new mapv.DataSet(data1)
    var options = {
      gradient: {
        0: 'yellow',
        1: 'red'
      },
      globalAlpha: 0.8,
      draw: 'intensity'
    }

    map.addLayer(
      new ImageLayer({
        source: new Mapv({ map: map, dataSet: dataSet1, mapvOptions: options })
      })
    )

    var data2 = []
    for (var key in citys) {
      var center = mapv.utilCityCenter.getCenterByCityName(key.replace('市', ''))
      data2.push({
        geometry: {
          type: 'Point',
          coordinates: [center.lng, center.lat]
        },
        text: key
      })
    }
    var dataSet2 = new mapv.DataSet(data2)
    var textOptions = {
      draw: 'text',
      font: '14px Arial',
      fillStyle: 'blue',
      shadowColor: 'white',
      shadowBlue: 20,
      zIndex: 11,
      shadowBlur: 10
    }
    map.addLayer(
      new ImageLayer({
        source: new Mapv({ map: map, dataSet: dataSet2, mapvOptions: textOptions })
      })
    )
  }
}
</script>