irpas技术客

如何调用GeoJson呈现地图_逆商IT_geojson地图

irpas 4639

?

<template>

? ? <div id="china_map_box">

? ? ? ? <!-- v-if="deepTree.length > 1"-->

? ? ? ? <el-button type="primary" size="mini" class="back" @click="back" >最大化</el-button>

? ? ? ? <div class="echarts" id="echarts">

? ? ? ? ? ? <div class="map" id="map"></div>

? ? ? ? </div>

? ? </div>

</template>

<script>

import { disConnect } from 'echarts';

? ? import {getChinaJson, getProvinceJSON, getCityJSON} from "../api/get-json";

? ? import {cityProvincesMap} from '../config/cityChangYuanMap'

? ? import {mapOption} from '../config/mapOption'

? ? //import indexmap from '../views/indexMap';

? ? export default {

? ? ? ? name: "changYuanMap",

? ? ? ? components: {},

? ? ? ? data() {

? ? ? ? ? ? return {

? ? ? ? ? ? ? ? chart: null, // 实例化echarts

? ? ? ? ? ? ? ? provincesMap: cityProvincesMap.provincesMap, // 地区拼音,用于查找对应json

? ? ? ? ? ? ? ? provincesCode: cityProvincesMap.provincesCode, // 地区行政区划,用于查找对应json

? ? ? ? ? ? ? ? areaMap: cityProvincesMap.areaMap, // 地区行政区划,用于数据的查找,按行政区划查数据

? ? ? ? ? ? ? ? mapData: [], // 当前地图上的地区

? ? ? ? ? ? ? ? option: {...mapOption.basicOption}, // map的相关配置

? ? ? ? ? ? ? ? deepTree: [],// 点击地图时push,点返回时pop

? ? ? ? ? ? ? ? areaName: '长垣市', // 当前地名

? ? ? ? ? ? ? ? areaCode: '410783', // 当前行政区划

? ? ? ? ? ? ? ? //areaLevel: 'country', // 当前级别

? ? ? ? ? ? ? ? areaLevel: 'town',// 当前级别

? ? ? ? ? ? ? ? scale:1,//鼠标事件

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? mounted() {

? ? ? ? ? ? this.$nextTick(() => {

? ? ? ? ? ? ? ? this.initEcharts();

? ? ? ? ? ? ? ? this.chart.on('click', this.echartsMapClick);

? ? ? ? ? ? });

? ? ? ? ? ? document.getElementById("echarts").onmousewheel=(event)=>{

? ? ? ? ? ? var dir=event.deltaY>0?"Up":"Down";

? ? ? ? ? ? if(dir=="Up"){

? ? ? ? ? ? ? ? console.log();

? ? ? ? ? ? ? ? this.zoommin();

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? console.log();

? ? ? ? ? ? ? ? this.zoomout();

? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? methods: {

? ? ? ? ? ? // 初次加载绘制地图

? ? ? ? ? ? initEcharts() {

? ? ? ? ? ? ? ? //地图容器

? ? ? ? ? ? ? ? this.chart = this.$echarts.init(document.getElementById('map'));

? ? ? ? ? ? ? ? if (this.areaCode === '410783') {

? ? ? ? ? ? ? ? ? ? this.requestGetChinaJson();

? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? this.requestGetProvinceJSON({areaName: this.areaName, areaCode: this.areaCode})

? ? ? ? ? ? ? ? }

? ? ? ? ? ? },

? ? ? ? ? ? // 地图点击

? ? ? ? ? ? echartsMapClick(params) {

? ? ? ? ? ? ? ? // console.log(params);

? ? ? ? ? ? ? ? this.areaName = params.areaName;

? ? ? ? ? ? ? ? if (params.name in this.provincesMap) {

? ? ? ? ? ? ? ? ? ? this.areaCode = params.data.areaCode;

? ? ? ? ? ? ? ? ? ? this.areaLevel = params.data.areaLevel;

? ? ? ? ? ? ? ? ? ? //如果点击的是34个省、市、自治区,绘制选中地区的二级地图

? ? ? ? ? ? ? ? ? ? this.requestGetProvinceJSON(params.data);

? ? ? ? ? ? ? ? } else if (params.seriesName in this.provincesMap) {

? ? ? ? ? ? ? ? ? ? //如果是【直辖市/特别行政区】只有二级下钻

? ? ? ? ? ? ? ? ? ? if (this.special.indexOf(params.seriesName) >= 0) {

? ? ? ? ? ? ? ? ? ? ? ? return;

? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? this.areaCode = this.areaMap[params.name];

? ? ? ? ? ? ? ? ? ? ? ? this.areaLevel = params.data.areaLevel;

? ? ? ? ? ? ? ? ? ? ? ? //显示县级地图

? ? ? ? ? ? ? ? ? ? ? ? this.requestGetCityJSON(params.data)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? return;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? this.$emit('map-change', params.data);

? ? ? ? ? ? },

? ? ? ? ? ? //绘制全国地图

? ? ? ? ? ? requestGetChinaJson() {

? ? ? ? ? ? ? ? getChinaJson().then(res => {

? ? ? ? ? ? ? ? ? ? let arr = [];

? ? ? ? ? ? ? ? ? ? for (let i = 0; i < res.features.length; i++) {

? ? ? ? ? ? ? ? ? ? ? ? let obj = {

? ? ? ? ? ? ? ? ? ? ? ? ? ? name: res.features[i].properties.name,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaName: res.features[i].properties.name,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaCode: res.features[i].id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaLevel: 'province',

? ? ? ? ? ? ? ? ? ? ? ? ? ? value: Math.round(Math.random()),

? ? ? ? ? ? ? ? ? ? ? ? };

? ? ? ? ? ? ? ? ? ? ? ? arr.push(obj)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? this.mapData = arr;

? ? ? ? ? ? ? ? ? ? this.deepTree.push({

? ? ? ? ? ? ? ? ? ? ? ? mapData: arr,

? ? ? ? ? ? ? ? ? ? ? ? //params: {name: 'china', areaName: 'china', areaLevel: 'country', areaCode: '000000'}

? ? ? ? ? ? ? ? ? ? ? ? params: {

? ? ? ? ? ? ? ? ? ? ? ? ? ? name: 'changyuanshi',

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaName: 'changyuanshi',

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaLevel: 'town',

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaCode: '410783'}

? ? ? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? ? ? //注册地图

? ? ? ? ? ? ? ? ? ? //this.$echarts.registerMap('china', res);

? ? ? ? ? ? ? ? ? ? this.$echarts.registerMap('changyuanshi', res);

? ? ? ? ? ? ? ? ? ? //绘制地图

? ? ? ? ? ? ? ? ? ? //this.renderMap('china', arr);

? ? ? ? ? ? ? ? ? ? this.renderMap('changyuanshi', arr);

? ? ? ? ? ? ? ? });

? ? ? ? ? ? },

? ? ? ? ? ? // 加载省级地图

? ? ? ? ? ? requestGetProvinceJSON(params) {

? ? ? ? ? ? ? ? getProvinceJSON(params.areaCode).then(res => {

? ? ? ? ? ? ? ? ? ? this.$echarts.registerMap(params.areaName, res);

? ? ? ? ? ? ? ? ? ? let arr = [];

? ? ? ? ? ? ? ? ? ? for (let i = 0; i < res.features.length; i++) {

? ? ? ? ? ? ? ? ? ? ? ? let obj = {

? ? ? ? ? ? ? ? ? ? ? ? ? ? name: res.features[i].properties.name,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaName: res.features[i].properties.name,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaCode: res.features[i].id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? //areaLevel: 'city',

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaLevel:'town',

? ? ? ? ? ? ? ? ? ? ? ? ? ? value: Math.round(Math.random()),

? ? ? ? ? ? ? ? ? ? ? ? };

? ? ? ? ? ? ? ? ? ? ? ? arr.push(obj)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? this.mapData = arr;

? ? ? ? ? ? ? ? ? ? this.deepTree.push({

? ? ? ? ? ? ? ? ? ? ? ? mapData: arr,

? ? ? ? ? ? ? ? ? ? ? ? params: params,

? ? ? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? ? ? this.renderMap(params.areaName, arr);

? ? ? ? ? ? ? ? });

? ? ? ? ? ? },

? ? ? ? ? ? // 加载市级地图

? ? ? ? ? ? requestGetCityJSON(params) {

? ? ? ? ? ? ? ? this.areaLevel = params.areaLevel;

? ? ? ? ? ? ? ? getCityJSON(params.areaCode).then(res => {

? ? ? ? ? ? ? ? ? ? this.$echarts.registerMap(params.areaName, res);

? ? ? ? ? ? ? ? ? ? let arr = [];

? ? ? ? ? ? ? ? ? ? for (let i = 0; i < res.features.length; i++) {

? ? ? ? ? ? ? ? ? ? ? ? let obj = {

? ? ? ? ? ? ? ? ? ? ? ? ? ? name: res.features[i].properties.name,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaName: res.features[i].properties.areaName,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaCode: res.features[i].id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? areaLevel: 'districts',

? ? ? ? ? ? ? ? ? ? ? ? ? ? value: Math.round(Math.random()),

? ? ? ? ? ? ? ? ? ? ? ? };

? ? ? ? ? ? ? ? ? ? ? ? arr.push(obj)

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? this.mapData = arr;

? ? ? ? ? ? ? ? ? ? this.deepTree.push({mapData: arr, params: params});

? ? ? ? ? ? ? ? ? ? this.renderMap(params.areaName, arr);

? ? ? ? ? ? ? ? })

? ? ? ? ? ? },

? ? ? ? ? ? renderMap(map, data) {

? ? ? ? ? ? ? ? this.option.series = [

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? name: map,

? ? ? ? ? ? ? ? ? ? ? ? mapType: map,

? ? ? ? ? ? ? ? ? ? ? ? ...mapOption.seriesOption,

? ? ? ? ? ? ? ? ? ? ? ? data: data

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ];

? ? ? ? ? ? ? ? //渲染地图

? ? ? ? ? ? ? ? this.chart.setOption(this.option);

? ? ? ? ? ? },

? ? ? ? ? ? // 返回

? ? ? ? ? ? // back() {

? ? ? ? ? ? // ? ? // console.log(this.deepTree);

? ? ? ? ? ? // ? ? if (this.deepTree.length > 1) {

? ? ? ? ? ? // ? ? ? ? this.deepTree.pop();

? ? ? ? ? ? // ? ? ? ? let areaName = this.deepTree[this.deepTree.length - 1].params.areaName;

? ? ? ? ? ? // ? ? ? ? let mapData = this.deepTree[this.deepTree.length - 1].mapData;

? ? ? ? ? ? // ? ? ? ? this.$emit('back-change', this.deepTree[this.deepTree.length - 1].params);

? ? ? ? ? ? // ? ? ? ? this.renderMap(areaName, mapData);

? ? ? ? ? ? // ? ? }

? ? ? ? ? ? //},

? ? ? ? ? ? //跳转页面

? ? ? ? ? ? back(){

? ? ? ? ? ? ? ? window.location.href ='../views/indexMap';

? ? ? ? ? ? },

? ? ? ? ? ? //鼠标滑动事件

? ? ? ? ? ? zoomout(){

? ? ? ? ? ? ? console.log("out");

? ? ? ? ? ? ? document.getElementById("map").style.transform="scale("+this.scale+")";

? ? ? ? ? ? ? this.scale+=0.5;

? ? ? ? ? ? },

? ? ? ? ? ?zoommin(){

? ? ? ? ? ? ? ?console.log("min");

? ? ? ? ? ? ? ?document.getElementById("map").style.transform="scale("+this.scale+")";

? ? ? ? ? ? ? ?this.scale-=0.5;

? ? ? ? ? ? ? ?if(this.scale<0.5){

? ? ? ? ? ? ? ? this.scale=0.5;

? ? ? ? ? ? ? ?}

? ? ? ? ? ?}

? ? ? ? }

? ? }

</script>

<style lang="scss" scoped>

? ? #china_map_box {

? ? ? ? display: flex;

? ? ? ? width: 100%;

? ? ? ? height: 100%;

? ? ? ? position: relative;

? ? ?

? ? ? ? .echarts {

? ? ? ? ? ? width: 0;

? ? ? ? ? ? flex: 1;

? ? ? ? ? ? background-size: 100% 100%;

? ? ? ? ? ? #map {

? ? ? ? ? ? ? ? height: 100%;

? ? ? ? ? ? ? ? margin-top: 20px;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? .back {

? ? ? ? ? ? position: absolute;

? ? ? ? ? ? top: .8rem;

? ? ? ? ? ? right: .5rem;

? ? ? ? ? ? z-index: 999;

? ? ? ? ? ? padding-left: .12rem;

? ? ? ? ? ? padding-right: .12rem;

? ? ? ? }

? ? }

</style>

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #geojson地图 #ampltdiv