leaflet geojson行政区域展示

2023-11-19

目录

获取geoJson数据

下载数据

获取本地json数据

 L.poylgan绘制图形

效果展示

完整代码

 


获取geoJson数据

下载数据

(阿里云上下载不了的话 我把json数据放在网盘了  链接:百度网盘 请输入提取码 提取码:ifso)

我实在阿里云上获取的geoJson数据,下载下来放在了本地文件。连接如下。

http://datav.aliyun.com/portal/school/atlas/area_selectorhttp://datav.aliyun.com/portal/school/atlas/area_selector

获取本地json数据

将下载好的json数据放入项目的public文件夹下

用axios获取json数据

$axios.get('/JsonData/polygon.json').then(res => {
    console.log(res.data) //获取到的数据
})

 L.poylgan绘制图形

       代码如下

        绘制北京市各区域的图形,并在上面加上区域名称。

const paintPolygan = () => {
    $axios.get('/JsonData/polygon.json').then(res => {
      let geojson = res.data
      L.geoJson(geojson, {
        style: {
          weight: 2,
          opacity: 1,
          color: '#0080FF',//边界颜色
          fillOpacity: 0.2,
          fillColor: '#0080FF'//填充颜色 默认透明度为0.2
        },
        onEachFeature:function(feature,layer){
          console.log(feature)
          L.marker(layer.getBounds().getCenter(),{  //获取中心点
            icon:L.divIcon({
              html:`<label style="color:red">${feature.properties.name}</label>`,
              iconSize:50,
              className:'my-title'
            })
          }).addTo(polygonLayer)
        }
      }).addTo(polygonLayer);
    })
  }

效果展示

        完整代码

<template>
    <!-- leaflet 地图容器 -->
    <div id="myMap"></div> 
</template>
<script setup>
  import L from 'leaflet';
  import 'leaflet/dist/leaflet.css';
  import 'leaflet.pm';
  import 'leaflet.pm/dist/leaflet.pm.css';
  import {onMounted} from 'vue'
  import {inject} from 'vue'
  const $axios = inject('axios')
  let tdtKey = '242c568d3a7aafcb08f001e4e5437b6f'
  let mapObj = null
  let paintLayer = null
  let polygonLayer = null
  const initMap = () => {
    //矢量地图
    const tiandituMap =  L.tileLayer(`http://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tdtKey}`)
    //注记
    const tiandituText =  L.tileLayer(`http://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tdtKey}`)
    const layers = L.layerGroup([tiandituMap,tiandituText])
    mapObj = L.map('myMap',{
      center:[39.56,116.20], //初始地图中心
      zoom:10, //初始缩放等级
      maxZoom:17, //最大缩放等级
      minZoom:5, //最小缩放等级
      zoomControl:true,//不显示缩放小控件
      layers:[layers]
    })
    //图标图层。
    paintLayer = new L.FeatureGroup()
    mapObj.addLayer(paintLayer)
    //多边形图层
    polygonLayer = new L.FeatureGroup()
    mapObj.addLayer(polygonLayer)

    // //添加PM控件
    // mapObj.pm.addControls({
    //   position:'topleft',
    //   drawMarker:false,
    // })

    // //PM语言
    // mapObj.pm.setLang('zh');
    // //设置通用图形颜色
    // // mapObj.pm.setPathOptions({
    // //   color:'pink',
    // //   fillColor:'yellow',
    // //   fillOpacity:0.4
    // // })
    // mapObj.on('pm:drawstart',  e => {
    // // workingLayer.on('pm:create', e => {
    //   console.log('绘制开始')
    //   console.log(e);
    // // });
    // });
    // mapObj.on('pm:drawend',  e => {
    // // workingLayer.on('pm:create', e => {
    //   console.log('绘制结束')
    //   console.log(e);
    // // });
    // });
    // mapObj.on('pm:create',  e => {
    // // workingLayer.on('pm:create', e => {
    //   console.log('创建完成');
    //   console.log(e);
    // // });
    // });

    // //设置圆的颜色
    // let circleOptions = {
    //   templineStyle: { //实线颜色
    //     color:'black'
    //   },
    //   hintlineStyle: { //辅助线颜色
    //     color:'yellow'
    //   },
    //   pathOptions: {  //最后创建完成的颜色
    //     color: 'orange',  //边框颜色
    //     fillColor: 'green',  //填充颜色
    //   }
    // }
    // mapObj.pm.enableDraw('Circle',circleOptions)

    // //设置多边形的颜色
    // let polygonOptions = {
    //   templineStyle: {
    //   },
    //   // the line from the last marker to the mouse cursor
    //   hintlineStyle: {
    //   },
    //   pathOptions: {
    //     color: 'pink',
    //     fillColor: 'skyblue',
    //   }
    // }
    // mapObj.pm.enableDraw('Polygon',polygonOptions)
  }
  const paintPolygan = () => {
    $axios.get('/JsonData/polygon.json').then(res => {
      let geojson = res.data
      L.geoJson(geojson, {
        pmIgnore: true, //leaflet.pm 忽视该图形
        style: {
          weight: 2,
          opacity: 1,
          color: '#0080FF',//边界颜色
          fillOpacity: 0.2,
          fillColor: '#0080FF'//填充颜色 默认透明度为0.2
        },
        onEachFeature:function(feature,layer){
          L.marker(layer.getBounds().getCenter(),{
            icon:L.divIcon({
              html:`<label style="color:red">${feature.properties.name}</label>`,
              iconSize:50,
              className:'my-title'
            })
          }).addTo(polygonLayer)
        }
      }).addTo(polygonLayer);
    })
  }
  const paintMarker = () => {
    //坐标数组
    let markerArrs = [
      {
        lat: 39.1, //纬度
        lng: 116.1, //经度
        title: '1'
      },
      {
        lat: 39.6,
        lng: 116.6,
        title: '2'
      }
    ]
    let iconSrc = require('../assets/image/greenIcon.png') //assets下的照片需要用require引入
    markerArrs.forEach(item => {
      let icon = L.icon({
        iconUrl: iconSrc, //图片地址
        iconSize: [25,25] //图片大小
      })
      let marker = L.marker([item.lat,item.lng],{
        icon: icon, //图标
        title: item.title, //图标名称
      })
      marker.on('click',(e) => {
        // console.log(e)
        //设置点击图标高亮显示
        //实现方式:遍历图标的图层,现将所有图标设置为旧图标,判断找到当前点击的图标,将点击的图标替换为新图标。
        paintLayer.eachLayer(function(layer) {
            console.log(layer)
            let iconSrc = require("../assets/image/redIcon.png")
            let newIcon  = L.icon({
                //图标地址
                iconUrl: iconSrc,
                //图标大小
                iconSize: [25, 25]
            })
            layer.setIcon(icon) //旧图标
            if (layer.options.title === e.target.options.title) {  //通过title找到当前点击的图标
                layer.setIcon(newIcon) //替换为新图标
            }
          }
        )
        let pop = L.popup().setLatLng([e.latlng.lat, e.latlng.lng]).setContent(`四喜大丸子${e.target.options.title}`) //定义泡泡弹框
        pop.addTo(mapObj) //添加泡泡弹框到到地图上
        pop.on('remove',()=>{
            paintLayer.clearLayers()
            paintMarker()
        })
      })
      marker.addTo(paintLayer)
    })
  }
  onMounted(()=>{
    initMap()
    paintMarker()
    paintPolygan()
  })
</script>
<style lang="stylus" scoped>
#myMap
  z-index 10
  width: 100%
  height: 100%
</style>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leaflet geojson行政区域展示 的相关文章

  • Vue 如何使用WebSocket与服务器建立链接 持续保持通信

    WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求 链接建立后 客户端和服务器端就可以通过TCP链接直接交互数据 WebSocket链接后可以通过 send 方法来向服务器发送数据 并通过 onn
  • JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

    JVM优化之 Xss Xms Xmx Xmn 参数设置 XmnXmsXmxXss有什么区别 Xmn Xms Xmx Xss都是JVM对内存的配置参数 我们可以根据不同需要区修改这些参数 以达到运行程序的最好效果 Xms 堆内存的初始大小 默
  • 30天精通Nodejs--第十九天:express-文件上传下载

    目录 前言 环境准备与依赖安装 文件上传功能实现 引入并配置express fileupload中间件 注意事项 文件下载功能实现 结语 前言 文件的上传和下载是许多应用程序必备的功能 Node js的Express框架同样可以通过集
  • chrome浏览器无法在地址栏输入内容搜索问题解决--图文

    关于日常遇到的小问题解决记录一下 1 导航栏录入信息后跳转错误 2 解决办法 默认百度搜索引擎地址错误 百度正确的搜索格式是 http www baidu com s wd s chrome浏览器中百度的搜索格式是 http www bai
  • 州/省的地理边界 -> Google 地图多边形

    我正在构建一个 Web 应用程序 它将根据按钮和点击事件在 Google 地图上动态突出显示某些美国州和加拿大省份 计划 A 多边形 我的主要想法是绘制多边形 为此 我需要所有州和省轮廓 顺时针或逆时针 的坐标 纬度 经度 列表 在政府网站
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • 如何在 php 中添加形状文件 (.shp) 并在 php 文件中使用该形状文件数据?

    我必须在 php 中开发一个项目 并且必须包含形状文件 并且该形状文件需要转换为 kml 文件 我知道如何将形状文件转换为 kml 文件 但我不知道如何将形状文件导入 导入到 php 项目中 我还有包含更多信息的形状文件的支持文件 其中一些
  • 每行创建多边形并保留列

    早上好 下午好或晚上好 我已将一些位置数据分组到 1 小时的分组中 对于每个我都提取了最小的纬度和经度 它看起来像这样 df lt ID time bin count lat lon maxlat minlat maxlon minlon
  • 如何在postgis中找到多边形内的所有点?

    我将位置存储在 location table point location 几何 中 现在我在谷歌地图上绘制一个多边形并将该多边形 几何 传递到后端 我想找到该多边形内的所有位置 SELECT POINT LOCATION FROM LOC
  • 如何执行两个 SpatialPolygonsDataFrame 对象的矢量叠加?

    我有两个 GIS 图层 称呼它们为Soils and Parcels 存储为SpatialPolygonsDataFrames SPDFs 我想 覆盖 它们 在此处描述的意义上 http resources esri com help 9
  • GPS/GIS 计算:根据运动/每小时预测未来位置的算法?

    寻找资源或算法来在导航应用程序中计算以下内容 如果我当前的 GPS 位置为 0 0 并且我以 15 英里 小时的速度前进 32 度 我如何计算 10 秒后我的位置 i e GPSCoordinate predictedCoord GPSCo
  • 查找信标的两个地理位置之间的点

    假设我们有两个beacons放置在道路两侧 我们知道他们的latitude and longitude它们所在的位置 我们将它们视为一个位置 我们还知道distance两者之间以米为单位beacons 使用半正矢公式测量 我们的设备正在这两
  • 在地图上显示线串的方向 - 自动缩放地图

    我有这段代码 它在地图上绘制一个线串 它是用户提供的 2 个坐标点的轨迹 public class Quickstart public static void main String args throws Exception displa
  • 将 R data.frame 转换为 Javascript 数组

    我想将数据框的某些列保存为特定格式 JavaScript 格式 我尝试过使用toJSON from rjson包但这不起作用 我的结果应该是这样的 http leaflet github io Leaflet markercluster e
  • 在 Debian 上安装 PostGis 时出现错误“找不到 PGXS Makefile”

    我正在 Debian 机器上通过 psql 安装 PostGis 实际上是 crunchbang 我已完成以下步骤 wget http download osgeo org postgis source postgis 2 0 3 tar
  • 持久(基于磁盘)R 树(或 R* 树)

    R Tree 如何实现为持久性 基于磁盘 树 用于保存 R Tree 索引或保存叶值的文件的架构是什么 注意 此外 如何在这样的持久 R 树中执行插入 更新和删除操作 注释 II 我已经实现了具有批量加载功能的内存中 R 树 但我认为当我们
  • 使用多边形图层下方的轮廓线切割多边形

    我想根据高程将多边形图层切割成两部分 上部和下部 多边形可能是凸的或凹的 并且切割的位置可能彼此不同 等高线的间隔为 5m 这意味着我可能需要生成一个具有更紧凑的等高线的等高线 例如 1m 的间隔 关于如何做到这一点的任何想法 在 ArcG
  • 哪些应用程序使用 R 树?

    除了 GIS 应用程序之外 还有哪些其他应用程序或库使用 R 树及其变体 电脑游戏经常如此 这是一个很酷的链接 http en wikipedia org wiki MegaTexture Future Technology Evoluti
  • 查看 TIN 文件的工具

    有没有免费的开源工具可用于查看 TIN 不规则三角形网络 文件 我从 LAS 激光雷达数据 文件获得的 thanks 这在很大程度上取决于格式 大多数从 LIDAR 数据生成的 TIN 都采用标准 GIS 格式之一 在这种情况下 良好的开源
  • 如何反转 KML 以便突出显示多边形外部的区域

    我有一个 KML 文件 它是一个覆盖城市边界的多边形 目前我的多边形是灰色的 我想反转它 所以世界的其他部分都是灰色的 这是 kml 的链接 它应该带您到 Google 地图 埃德蒙顿市 https docs google com a ed

随机推荐

  • pyinstaller打包最小体积安装python程序 命令行传参执行

    文章目录 创建虚拟环境 进入虚拟环境安装库 pycharm配置虚拟环境 pycharm 打开terminal进入虚拟环境 运行参数传入 sys argv 是获取运行python文件的时候命令行参数 且以list形式存储参数 打包后的文件运行
  • js记录密码出错次数并锁定账号30分钟

    下面要说的是网站中一个常见的功能 在客人使用抵用券或者其他来支付的时候需要验证密码 如果密码输入错误5次就锁定 不在让客人使用抵用券了 在这里是使用的cookie来实现的 不太严谨 思路很简单 在输入密码错误的时候 使用cookie保存2个
  • 基于vue项目的上拉刷新,下拉加载的效果

    使用插件 better scroll 安装使用教程http ustbhuangyi github io better scroll doc installation html npm 还是看官网比较好 子组件
  • 28_content 阶段的 index 模块

    文章目录 content 阶段的 index 模块 显示目录内容 content 阶段的 autoindex 模块 autoindex 模块的指令 index autoindex 示例配置 content 阶段的 index 模块 ngx
  • 6、基于STM32呼吸灯(PWM)

    之前定时器中有提到输入和输出比较部分 https blog csdn net qq 45764141 article details 125286260 参考有江科大自化协的视频和正电原子的视频 这个文章主要讲输出部分 文章目录 一 OC
  • 全面解析并实现逻辑回归(Python)

    本文以模型 学习目标 优化算法的角度解析逻辑回归 LR 模型 并以Python从头实现LR训练及预测 一 逻辑回归模型结构 逻辑回归是一种广义线性的分类模型且其模型结构可以视为单层的神经网络 由一层输入层 一层仅带有一个sigmoid激活函
  • MiniUI - 快速开发WebUI

    http www miniui com index html
  • GPT4来了?10秒钟做一个网站

    GPT4来了 10秒钟做一个网站 好了 我可以像雪容融一样躺平了 为什么雪容融都会wei gui 言归正传 3月15日 GPT4做一个网站只要十秒 登上热搜 根据视频中的演示 首先在草稿纸上画出一个基本的网页框架 图源视频截图 过了仅仅10
  • 【小沐学C++】C++ 常用命令行开发工具(Linux)

    文章目录 1 简介 2 gcc g 2 1 system 执行shell 命令 2 2 popen 建立管道I O 2 3 vfork exec 新建子进程 3 clang 3 1 下载和安装clang 3 2 clang和gcc比较 3
  • Blow Up 3macOS图片放大锐利的详细使用教程与安装方法

    软件介绍 Blow Up 3 macOS是一个Photoshop和Lightroom插件 亲测有效 适合于Adobe Photoshop CS6和Adobe Photoshop CC 2015或更高版本 Adobe Lightroom 6或
  • VsCode远程调试服务器python代码(解决相对路径相关问题)

    1 首先在本地使用VsCode调试python代码 可参考链接 VSCode启动Debug模式调试Python文件 2 vscode远程连接服务器 调试python文件 可参考链接 一文掌握vscode远程调试python代码 3 调试时
  • Google guava之Multiset简介说明

    转自 Google guava之Multiset简介说明 下文笔者讲述guava中Multiset集合的简介说明 如下所示 guava之Multiset集合简介 Multiset集合 可用于存储重复元素 Multiset是ArrayList
  • 一文1000字彻底搞懂Web测试与App测试的区别

    总结分享一些项目需要结合Web测试和App测试的工作经验给大家 从功能测试区分 Web测试与App测试在测试用例设计和测试流程上没什么区别 而两者的主要区别体现在如下几个方面 1 系统结构方面 Web项目 B S架构 基于浏览器的 Web测
  • Unity编辑器界面概述

    了解界面 如果您对编辑器界面没有非常地了解 那么请花一些时间查看并熟悉 Editor 编辑器 界面 Editor 主窗口由选项卡式窗口组成 这些窗口可重新排列 因此 Editor 的外观可能因项目或者开发者而异 具体取决于个人偏好 Wind
  • GitHub博客搭建

    git官网文档 https git scm com book zh v2 E6 9C 8D E5 8A A1 E5 99 A8 E4 B8 8A E7 9A 84 Git E7 94 9F E6 88 90 SSH E5 85 AC E9
  • mmdetection入门介绍-train.py解析

    四 train py解析 同样 上面有单GPU测试和多GPU测试 其实上面的测试是由训练导致的 单GPU训练 python tools train py CONFIG FILE 如果要在命令中指定工作目录 则可以添加参数 work dir
  • Oracle数据泵、exp/imp工具导入导出数据

    一 最常用导出导入方案 exp imp命令工具 1 ssh工具连接服务器主机 exp命令导出 1 1将数据库全部数据导出 exp system password TestDB file bak dmp log exp log full y
  • Vue 弹出层时 禁止页面滑动

    页面中加顶部蒙层 发现滑动时底部页面内容会正常滚动 一 移动端 直接在蒙层所在div上加 touchmove prevent就好了 div class masktop div 二 PC端 显示弹层调用stop 否则调用move stop 滑
  • 华为OD机试真题- 阿里巴巴找黄金宝箱(V)-2023年OD统一考试(B卷)

    题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面贴有一个数字 阿里巴巴念出一个咒语数字k k
  • leaflet geojson行政区域展示

    目录 获取geoJson数据 下载数据 获取本地json数据 L poylgan绘制图形 效果展示 完整代码 获取geoJson数据 下载数据 阿里云上下载不了的话 我把json数据放在网盘了 链接 百度网盘 请输入提取码 提取码 ifso