【天地图】使用天地图api绘制GeoJson数据

天地图没有直接提供加载GeoJson数据或者文件的api,但是我们可以借助绘制多边形的方式实现

1 实现效果

绘制如下的矢量多边形效果;

 2 实现技术

(1) 首先用ajax请求geojson文件,从文件解析并获取到坐标数据

下面这个方法就是解析geojson返回的featurecollection中的坐标方式;其中可能有多段线稍微处理一下即可


/*** 从featureCollection获取所有linestring* @param {*} featureCollection * @returns  返回线段数组*/
function  getLinesFromGeojson(featureCollection){let lines=[];let geometries=featureCollection.geometriesfor(let i=0;i<geometries.length;i++){let geometry=geometries[i]let type=geometry.type;if(type==="LineString"){let line=geometry.coordinateslines.push(line)}if(type==="MultiLineString"){let subLines=geometry.coordinateslines=lines.concat(subLines) }}return lines
}

(2) 创建两个多边形,一个正常绘制;另一个背景偏移蒙版;可以表现出一定的立体效果;效果可以自己调样式 

/*** 创建polygon* @param {*} points 多边形坐标 二维数组* @param {*} option * @returns  返回polygon*/
function createPolygon(coors,option){let points=[];coors.forEach((lonlat)=>{points.push(new T.LngLat(lonlat[0], lonlat[1]));})return new T.Polygon(points,{color: option.lineColor||"#47D4DE", weight:  option.lineWidth||1, opacity:  option.lineOpacity||1, fillColor: option.fillColor||"black", fillOpacity: option.fillOpacity||1});
}

 3 主要代码

代码是vue工程编写;可根据情况适当更改

// 初始化地图initMap(){var zoom = 8;var imageURL = "http://t0.tianditu.gov.cn/img_w/wmts?" +"SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=你自己的key";this.map = new T.Map("mapContainer", {layers: [this.createBaseLayer(imageURL)],minZoom: 5, maxZoom: 18});window.map=this.map;this.map.centerAndZoom(new T.LngLat(116.40969, 39.89945), zoom);this.map.enableScrollWheelZoom();},// 创建底图createBaseLayer(url){let layer = new T.TileLayer(url, {minZoom: 1, maxZoom: 18});return layer},// 异步加载Geojson数据async initPolygon(geojsonUrl,styleOption){let res= await axios.get(geojsonUrl);let featureCollection=res.data;let lines=tdtUtil.getLinesFromGeojson(featureCollection)lines.forEach((coors)=>{let polygon=tdtUtil.createPolygon(coors,styleOption);this.map.addOverLay(polygon);})   },// 初始化偏移矢量多边形async initOffsetPolygon(geojsonUrl,styleOption){let res= await axios.get(geojsonUrl);let featureCollection=res.data;let lines=tdtUtil.getLinesFromGeojson(featureCollection)lines.forEach((coors)=>{let polygon=tdtUtil.createOffsetPolygon(coors,styleOption);this.map.addOverLay(polygon);})   }

 初始调用

mounted(){// 初始化地图this.initMap();// 初始化区边界this.initPolygon("./static/district_county_bound.json",{fillOpacity:0.001});// 初始化市边界this.initPolygon("./static/district_city_bound.json",{lineWidth:3,fillOpacity:0.001});// 市背景蒙版this.initOffsetPolygon("./static/district_city_bound.json",{lineWidth:0.6,fillOpacity:0.5,});}

 4 api工具类

常用方法整理在一起使用直接调用,也比较方便;后续有需求会继续完善;所以单独上传;见天地图工具类封装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620699.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【自学笔记】天地图添加标注

知识点 MarkTool类&#xff1a;标注工具&#xff0c;用来让用户在地图上标注一个点&#xff0c;可以通过该工具获得用户标点的经纬度位置。构造函数&#xff1a;MarkTool(map:Map[,opts:MarkToolOptions])。参数说明&#xff1a;map为地图对象&#xff1b;opts&#xff1a;Mar…

离线地图最终解决方案

离线地图最终解决方案 前言 ​ 能找到这个帖子的朋友应该是公司要求做离线地图,但是没了解过的吧,我前一段也是公司要求做离线地图但是我没了解过,我就去搜了很多文章,找了很多方案,最后和leader定下来了两个方案,一个是使用一张固定缩放的图片,然后将像素转化为px来做…

天地图入门使用

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。集成了来自国家、省、市&#xff08;县&#xff09;各级测绘地理信息部门&#xff0c;以及相关政府部门、企事业单位 、社会团体、公众的地理信息公共服务资源&#xff0c;如果做的项目是政府部门、企事业单位尽量选…

javaee spring 自动注入,如果满足条件的类有多个如何区别

如图IDrinkDao有两个实现类 方法一 方法二 Resource(name“对象名”) Resource(name"oracleDrinkDao") private IDrinkDao drinkDao;

如何手动添加 WIFI 网络步骤

电脑手动添加WiFi网络步骤&#xff1a; 1.右键控制面板 2.进入控制面板 3.进入网络和Internet&#xff0c;点击设置新的连接或网络 4.点击手动连接到无线网络 5.输入网络SSID及秘钥 若需要自动连接请勾选自动启动此连接。 若WiFi不广播也自动连接请勾选即使网络未进行广播也连接…

【电脑设置wifi大揭秘】随身wifi怎么用?

随身wifi什么&#xff1f;一句话就是一种迷你版无线路由器&#xff0c;安装在台式机上也可充当无线网卡。目前&#xff0c;市面上的随身wifi有小度wifi、360随身wifi、wifi宝等。作为线上入口&#xff0c;互联网大佬们自然不会放手。 一、随身WiFi怎么用&#xff1f; 实际上&am…

计算机wifi怎么打不开,设置wifi的网址打不开怎么办?

问&#xff1a;设置wifi的网址(网站)打不开&#xff0c;无法对wifi进行设置&#xff0c;请问怎么解决这个问题&#xff1f; 答&#xff1a;wifi的设置网址打不开&#xff0c;多半是你操作有误引起的&#xff0c;极少数情况下是wifi路由器有问题导致的&#xff0c;这个问题的解决…

Windows下用某品牌随身WiFi搭建一个钓鱼热点

*本文原创作者&#xff1a;Leslie___Cheung &#xff0c;本文属于原创博客&#xff0c;未经许可禁止转载。 *本文内容仅代表作者观点且只做测试展示&#xff0c;目的是提醒读者注意 WiFi 联网安全&#xff0c;严禁将内容用于不法用途。 目录 前言 01 搭建过程 第一步&a…

随身wifi折腾日记 (刷armbian搭建服务器,内网穿透部署网站)

随身wifi折腾日记 跳转博客,观感更佳 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 For commercial use, please contact the author for authorization. For non-commercial use, please indicate the source. 协议(License)&#xff1a;署名-非商业性使用-…

网络基础 ----------- 电脑设置为wifi站点

在上大学的时候最难受的就是&#xff0c;没有无线&#xff0c;但是电脑有宽带&#xff0c;那么怎么将电脑变成路由器哪 1、首先查看你的无线网卡是否支持开无线 通过命令win R 快捷件进入命令窗口输入 &#xff1a; 、 netsh wlan show drivers //查看你的无线网卡是否支持…

把电脑设置为免费的WIFI热点

你还以为那些网络上的免费WIFI软件有多么神奇吗&#xff1f;你还在想用电脑WIFI却不想使用那些“流氓软件”而纠结吗&#xff1f;本篇以尽可能简单的方式&#xff0c;教你如何【靠自己】来把电脑设置为WIFI热点。&#xff08;哈哈&#xff0c;从此以后麻麻再也不用担心我会被流…

网络基础 ----------- 电脑设置为wifi站点

在上大学的时候最难受的就是&#xff0c;没有无线&#xff0c;但是电脑有宽带&#xff0c;那么怎么将电脑变成路由器哪 1、首先查看你的无线网卡是否支持开无线 通过命令win R 快捷件进入命令窗口输入 &#xff1a; 、 netsh wlan show drivers //查看你的无线网卡是否支…

笔记本电脑无线Wifi热点设置工具

这个不是C语言&#xff0c;是批处理命令行了&#xff0c;本身在Win7以上的系统内&#xff0c;笔记本电脑内置的无线网卡就可以被虚拟成无线Wifi热点&#xff0c;而不需要那些小软件&#xff0c;自己本身就可以DIY&#xff0c;就写了一个&#xff0c;还是很有实用价值的&#xf…

新的计算机的wifi连接无线网络连接,如何设置电脑优先连接无线WIFI网络

办公室网络多的情况下电脑自动连接到一些信号不好的WIFI影响我们正常的办公&#xff0c;手机也是一样的&#xff0c;在多种情况下限制了我们畅游互联网。下面是学习啦小编收集整理的如何设置电脑优先连接无线WIFI网络&#xff0c;希望对大家有帮助~~ 设置电脑优先连接无线WIFI网…

如何设置无线网络中计算机的ip,电脑wifi怎么设置 电脑wifi设置教程详解

现在很多人的日常娱乐方式主要是看看视频、上上网等,和过去不一样的是,现在大家上网不只是用电脑,更多的是智能手机和 平板电脑 。但是他们是无法接入 网线 的,单纯用流量的话费用非常高,所以就离不开WiFi的使用了。很多人家中也有电脑,但是可能不知道如何让自己的电脑给…

关于msvcp140.dll丢失的解决方法,分享最简单详细的解决方法

今天&#xff0c;我将为大家详细介绍一种常见的问题——msvcp140.dll丢失&#xff0c;并提供四种不同的解决方法。希望通过这次分享&#xff0c;能够帮助大家解决这个问题&#xff0c;提高电脑使用效率。 首先&#xff0c;让我们来了解一下msvcp140.dll文件。msvcp140.dll是Mi…

/PROC/[PID]各目录项的UID、GID是怎么来的

/PROC/[PID]各目录项的UID、GID是怎么来的 文章目录 /PROC/[PID]各目录项的UID、GID是怎么来的第一层&#xff1a;伪文件系统inode_operation.getattr.lookup 第二层&#xff1a;进程的dumpable属性物理上对应哪个字段这个字段什么时候更新 最近遇到一个好玩的现象&#xff1a;…

lab8 lock

PreRead 第六章3.5节&#xff1a;物理内存分配器8.1-8.3 文章目录 PreReadMemory allocatortaskshints思路 Buffer cachetaskhints思路实现 这次的lab&#xff0c;本质上都是通过将锁的粒度减小来获得性能的提升 第一个task&#xff0c;可以简单地按cpu划分&#xff0c;因为本…

GiD 前处理 实例

目录 Blog Links一、前言二、创建 1/8 半球体2.1 创建圆弧及圆球面2.2 创建半球面等分点2.3 连接等分线2.4 生成 1/8 半球体 三、创建整个球体四、划分网格五、尾声六、参考文献 Blog Links DalNur | 博客总目录 GiD 实用教程 GiD 前处理 实例 GiD 自定义 简介 GiD 后处理 …

Linux 建立用户和修改用户UID,GID

预设用户名为tom&#xff0c;UID222&#xff0c;GID222 首先我们来创建一个用户&#xff0c;创建用户命令&#xff1a; useradd tom&#xff08;useradd 用户名&#xff09; 创建好用户名后&#xff0c;再来创建用户的密码&#xff0c;于是接着创建密码&#xff0c;创建密码命…