十分钟玩转 vue3+高德地图AMap+geojson批量绘制Polygon地块数据展示【三、Geojson地图数据批量导入地图】

十分钟玩转 vue3+高德地图AMap+geojson批量绘制Polygon地块数据展示【三、Geojson地图数据批量导入地图】

本章节文末,付完整代码

在public/目录新建设一个data目录,里面存放geojson数据

在这里插入图片描述
这里我提供部分json数据给大家用于练习使用:


逻辑分析和处理:

1.开始处理控制面板勾选年份的事件
触发选中后,需要做个判断,是否第一次读取 geojson 数据。 如果是第一次读取,则使用getdata方法去跑axios,获取数据。如果不是第一次加载数据,则跑showpolygon 或者 hidepolygon 方法来进行显示或者隐藏地块。

polygonarr 为地块数组
polygondata 为地块数据

var map  = shallowRef(null);
var amap = (null);
var checkobj ={
   }
const GetMassif = (aa:any) => {
   
    
    var checkarr = [] // 年,颜色,当前状态,是否加载
    checkarr= aa.split(',')
    if (checkobj[checkarr[0]]){
   
        
        // 不是第一次加载geojson数据
        if (checkarr[2]==1){
   
            showpolygon(checkarr[0])//展示地块
        }else{
   
            hidepolygon(checkarr[0])//隐藏地块
        }
        
    }else{
   

        checkarr.push("1")//存入第四个参数,是否加载
        checkobj[checkarr[0]]= checkarr
        //如果是第一次加载,则需要用axios读取数据;
        if (checkarr[2]==1){
   
            getdata(checkarr[0],checkarr[1]) //首次加载数据
        }

    }
    
}


//隐藏覆盖物
const hidepolygon = (year:any)=>{
   
    polygonarr.forEach(element => {
   //循环地块数组
        
        if (element.id == year){
   
            element.polygondata.hide()//隐藏地块
        }
    });
}
//显示覆盖物
const showpolygon = (year:any)=>{
   
    polygonarr.forEach(element => {
   
        if (element.id == year){
   
            element.polygondata.show()
        }
    })
}

2.走 getdata 方法直接读取arcgis 转出来的geojson 数据,我这里的数据为gps84坐标数据,需要用高德的API的convertFrom函数,转换成高德高的坐标系。

//读取geojson数据
var dataarr = []
var datalt = {
   }
const getdata = (year :any,color:any) =>{
   
    axios({
   
        method: 'get',
        url: 'public/data/dk'+year+'.json',
    }).then((res) => {
   

        datalt={
   
            "year":year,
            "data":res.data
        }
        dataarr.push(datalt)
        
        // 走转换数据的方法
        TransformationData(res.data,year,color)
        console.log('GeoJSON 数据加载完成')
    }).catch((msg) => {
   
        console.log("msg", msg)
        console.log('GeoJSON 服务请求失败')
    })

}

备注:以下为geojson数据

{
   
  "type": "FeatureCollection",
  "crs": {
    "type": "name", "properties": {
    "name": "EPSG:4326" } },
  "features": [
    {
   
      "type": "Feature",
      "id": 1,
      "geometry": {
   
        "type": "Polygon",
        "coordinates": [
          [
            [108.99980896100004, 22.999783316000048, 0],
            [108.99946594000005, 22.999994280000067, 0],
            [108.99925232000004, 22.999885560000052, 0],
            [108.99980164000004, 22.999479290000068, 0],
            [109.00005341000008, 22.999633790000075, 0],
            [109.00004999100008, 22.999635879000039, 0],
            [109.00004577600004, 22.999633789000029, 0],
            [108.99980896100004, 22.999783316000048, 0]
          ]
        ]
      },
      "properties": {
   
        "OBJECTID": 1,
        "Name": "010101002.01.韦x圆.45130210120000142300",
        "Shape_Length": 0.0019098079207306106,
        "Shape_Area": 1.633144971052641e-7,
        "MJ": 1854.2365449356753
      }
    },
    {
   
      "type": "Feature",
      "id": 2,
      "geometry": {
   
        "type": "Polygon",
        "coordinates": [
          [
            [109.00004999100008, 22.999635879000039, 0],
            [109.00051116900005, 22.999864578000029, 0],
            [109.00002288800005, 23.000301361000027, 0],
            [108.99945068400007, 23.000009537000039, 0],
            [108.99980896100004, 22.999783316000048, 0],
            [109.00004577600004, 22.999633789000029,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用高德地图 JavaScript API 中的 AMap.Geolocation 对象来确认用户当前的位置。具体步骤如下: 1. 引入高德地图 JavaScript API: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您的高德地图API Key"></script> ``` 2. 创建地图实例: ```javascript var map = new AMap.Map('map-container', { zoom: 13 }); ``` 3. 创建 AMap.Geolocation 实例: ```javascript var geolocation = new AMap.Geolocation({ enableHighAccuracy: true, // 是否使用高精度定位,默认为false timeout: 10000, // 超过10秒后停止定位,默认为5s maximumAge: 0, // 定位结果缓存0毫秒,默认值为0 convert: true, // 是否使用坐标转换服务,默认为true showButton: true, // 是否显示定位按钮,默认为false buttonPosition: 'RB', // 定位按钮的位置,默认为'LB',左下角 buttonOffset: new AMap.Pixel(10, 10), // 定位按钮距离地图边缘的偏移量 showMarker: true, // 是否显示定位点,默认为true markerOptions: { icon: new AMap.Icon({ size: new AMap.Size(24, 24), image: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png', imageSize: new AMap.Size(24, 24) }) }, // 定位点的图标样式 showCircle: true, // 是否显示定位精度圆,默认为true circleOptions: { strokeColor: '#0093FF', fillColor: '#0093FF', strokeWeight: 1, fillOpacity: 0.3 } // 定位精度圆的样式 }); ``` 4. 调用 AMap.Geolocation 的 getCurrentPosition 方法进行定位: ```javascript geolocation.getCurrentPosition(function(status, result) { if (status === 'complete') { // 定位成功 var position = result.position; // 获取定位结果的经纬度信息 map.setCenter(position); // 将地图中心移动到定位结果的位置 } else { // 定位失败 console.log('定位失败:' + result.message); } }); ``` 以上代码将会在地图中心显示当前位置的定位点,并在定位精度圆内显示精度范围。 注意:在使用高德地图 JavaScript API 进行地图开发时,需要在高德开放平台申请 API Key 并进行授权。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值