解决echarts地图geoJson报错问题(Invalid geoJson format Cannot read prope)改源码就太蠢了

文章讲述了在处理GeoJSON数据时遇到Echarts不支持GeometryCollection类型的问题,解决方案是使用turf库将这类数据转换为Echarts可识别的MultiPolygon类型。通过`toSplit`和`transFormGeoJson`函数实现数据转换,确保地图渲染正常。
摘要由CSDN通过智能技术生成

报错是因为你的geoJson数据有echarts不认识的类型,比如GeometryCollection,

那么通过turf将它转换为echarts认识的类型不就好了

import * as echarts from 'echarts'
import * as turf from "@turf/turf";

let yishuixian = require('../../../public/json/yishuixian.json')

export const znMap = {
  yishuixian: "沂水县"
};
export function registerMap(mapName, geoJson) {
  if (mapName && geoJson) {
    let map = eval(geoJson);
    map = toSplit(map);
    if (Object.keys(znMap).includes(geoJson)) {
      echarts.registerMap(mapName, map);
    } else {
      echarts.registerMap(mapName, yishuixian)
    }
  }
}

function toSplit(map) {
  let tempArr = map.features.map(i => {
    if (i.geometry.type != "GeometryCollection") {
      return i;
    } else {
      return transFormGeoJson(i);
    }
  })
  return turf.featureCollection(tempArr);;
}

function transFormGeoJson(map) {
  // 将GeometryCollection类型转换为MultiPolygon类型
  const multiPolygon = turf.multiPolygon(
    map.geometry.geometries.map((geometry) => {
      return geometry.coordinates;
    })
  );
  multiPolygon.properties = map.properties;
  return multiPolygon;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值