AntV L7 实现地图功能(高德)

一、 使用前的准备

  1. 首先,注册开发者账号,成为高德开放平台开发者

  2. 登陆之后,在进入「应用管理」 页面「创建新应用」

  3. 为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」

二、安装依赖 

// 安装L7 依赖

npm install --save @antv/l7

// 安装第三方底图依赖

npm install --save @antv/l7-maps

三、初始化地图

1. 获取创建的key

2. 注入token中

import { Scene } from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';
import { useEffect } from 'react';export default () => {useEffect(() => {const scene = new Scene({id: 'map',map: new GaodeMap({style: 'dark',center: [105.770672, 38.159869],zoom: 2.90,token: '你创建的Key',}),});}, []);return (<divid="map"style={{height: 500,width: 800,position: 'relative',justifyContent: 'center',}}></div>);
};

3. 效果图

四、绘制填充图

1. 中国各省 GeoJSON 数据。

https://gw.alipayobjects.com/os/bmw-prod/d6da7ac1-8b4f-4a55-93ea-e81aa08f0cf3.json 

2. 填充地图 

import { PolygonLayer } from '@antv/l7';const chinaPolygonLayer = new PolygonLayer({}).source(da1).color('name', ['rgb(239,243,255)','rgb(189,215,231)','rgb(107,174,214)','rgb(49,130,189)','rgb(8,81,156)',]);scene.addLayer(chinaPolygonLayer);

3. 效果  

五、增加行政区划描边和行政区划文字标注

1. 数据

https://gw.alipayobjects.com/os/bmw-prod/c4a6aa9d-8923-4193-a695-455fd8f6638c.json

2. 填充地图

import { LineLayer, PointLayer } from '@antv/l7';const layer2 = new LineLayer({zIndex: 2,
}).source(da1).color('rgb(93,112,146)').size(0.6).style({opacity: 1,});scene.addLayer(layer2);const labelLayer = new PointLayer({zIndex: 5,
}).source(da2, {parser: {type: 'json',coordinates: 'center',},}).color('#fff').shape('name', 'text').size(12).style({opacity: 1,stroke: '#fff',strokeWidth: 0,padding: [5, 5],textAllowOverlap: false,});scene.addLayer(labelLayer);

3. 效果

六、定义高亮

1.  默认hover高亮

chinaPolygonLayer.active(true); // 开启默认高亮效果

chinaPolygonLayer.active({ color: 'red' }); // 开启并设置高亮颜色为红色

 

2. 自定义点击高亮 

const hightLayer = new LineLayer({zIndex: 4, // 设置显示层级name: 'hightlight'
}) .source({type: 'FeatureCollection',features: [ ]}).shape('line').size(2).color('red');scene.addLayer(hightLayer);// 设置点击生效
chinaPolygonLayer.on('click', feature => {hightLayer.setData({type: 'FeatureCollection',features: [ feature.feature ]});
});

 

3. 添加hover信息框

import { Popup } from '@antv/l7';chinaPolygonLayer.on('mousemove', (e) => {const popup = new Popup({offsets: [0, 0],closeButton: false,}).setLnglat(e.lngLat).setHTML(`<span>地区: ${e.feature.properties.name}</span>`);scene.addPopup(popup);
});

 

七、添加图例

1. 样式

.infolegend {padding: 5px;background: white;> i {display: inline-block;width: 20px !important;height: 10px;}
}

2. 代码

    import { Control } from '@antv/l7';   import './index.less';const legend = new Control({position: 'bottomright',});legend.onAdd = function () {let el = document.createElement('div');el.className = 'infolegend legend';const grades = [0, 10, 20, 50, 100, 200, 500];const color = ['rgb(255,255,217)','rgb(237,248,177)','rgb(199,233,180)','rgb(127,205,187)','rgb(65,182,196)','rgb(29,145,192)','rgb(34,94,168)','rgb(12,44,132)',];for (let i = 0; i < grades.length; i++) {el.innerHTML +='<i style="background:' +color[i] +'"></i> ' +grades[i] +(grades[i + 1] ? '-' + grades[i + 1] + '<br>' : '+');}return el;};scene.addControl(legend);

 3. 效果

八、成品代码

// JSXimport {Control,LineLayer,PointLayer,PolygonLayer,Popup,Scene,
} from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';
import { useModel } from '@umijs/max';
import { useEffect } from 'react';
import './index.less';
export default () => {const { da1, da2 } = useModel('maps');useEffect(() => {// 初始化地图const scene = new Scene({id: 'map',map: new GaodeMap({style: 'blank',center: [105.770672, 38.159869],zoom: 2.9,token: 'xxxxxx',}),});// 填充图const color = ['rgb(255,255,217)','rgb(237,248,177)','rgb(199,233,180)','rgb(127,205,187)','rgb(65,182,196)','rgb(29,145,192)','rgb(34,94,168)','rgb(12,44,132)',];const chinaPolygonLayer = new PolygonLayer({}).source(da1).color('name', color);scene.addLayer(chinaPolygonLayer);// 文字标注const layer2 = new LineLayer({zIndex: 2,}).source(da1).color('rgb(93,112,146)').size(0.6).style({opacity: 1,});scene.addLayer(layer2);// 区域描边const labelLayer = new PointLayer({zIndex: 5,}).source(da2, {parser: {type: 'json',coordinates: 'center',},}).color('#fff').shape('name', 'text').size(12).style({opacity: 1,stroke: '#fff',strokeWidth: 0,padding: [5, 5],textAllowOverlap: false,});scene.addLayer(labelLayer);// hover高亮// chinaPolygonLayer.active(true); // 开启默认高亮效果// chinaPolygonLayer.active({ color: 'red' }); // 开启并设置高亮颜色为红色// 设置点击高亮const hightLayer = new LineLayer({zIndex: 4, // 设置显示层级name: 'hightlight',}).source({type: 'FeatureCollection',features: [],}).shape('line').size(2).color('red');scene.addLayer(hightLayer);chinaPolygonLayer.on('click', (feature) => {hightLayer.setData({type: 'FeatureCollection',features: [feature.feature],});});// hover信息框chinaPolygonLayer.on('mousemove', (e) => {const popup = new Popup({offsets: [0, 0],closeButton: false,closeOnClick: true,}).setLnglat(e.lngLat).setHTML(`<span>地区: ${e.feature.properties.name}</span>`);scene.addPopup(popup);});// 右下角图例const legend = new Control({position: 'bottomright',});legend.onAdd = function () {let el = document.createElement('div');el.className = 'infolegend legend';const grades = [0, 10, 20, 50, 100, 200, 500];for (let i = 0; i < grades.length; i++) {el.innerHTML +='<i style="background:' +color[i] +'"></i> ' +grades[i] +(grades[i + 1] ? '-' + grades[i + 1] + '<br>' : '+');}return el;};scene.addControl(legend);}, []);return (<divid="map"style={{height: 500,width: 800,position: 'relative',justifyContent: 'center',}}></div>);
};
// LESS.infolegend {padding: 5px;background: white;> i {display: inline-block;width: 20px !important;height: 10px;}
}

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年【危险化学品生产单位主要负责人】复审模拟考试及危险化学品生产单位主要负责人作业模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位主要负责人复审模拟考试为正在备考危险化学品生产单位主要负责人操作证的学员准备的理论考试专题&#xff0c;每个月更新的危险化学品生产单位主要负责人作业模拟考试祝您顺利通过危险化学品…

深度学习 Day23——J3DenseNet算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

flutter 使用adb 同时连接 多个模拟器

MUMU模拟器 MuMu模拟器官网_安卓12模拟器_网易手游模拟器 传统只需要 连接一个 默认命令是 默认端口是7555 adb connect 127.0.0.1:7555 但是需要同时连接调试多个模拟器的时候 就需要连接多个 这里可以使用自带的多开 多开后 使用 1 是对应多开的序号 这样就可以查看对…

我是谁 whoami

文章目录 我是谁 whoami更多信息 我是谁 whoami 我知道你是谁&#xff0c;但我不知道我是谁&#xff0c;此时whoami可以帮助你&#xff0c;哈哈。 whoami将打印当前用户的名字。与id -un类似。 官方定义为&#xff1a; whoami - print effective userid 用法为&#xff1a; …

Redis基础学习一

1. Redis 入门 1.1. Redis 诞生历程 1.1.1.从一个故事开始 08 年的时候有一个意大利西西里岛的小伙子&#xff0c;笔名 antirez&#xff08;http://invece.org/&#xff09;&#xff0c;创建了一个访客信息网站 LLOOGG.COM。有的时候我们需要知道网站的访问情况&#xff0c;…

高级数据结构:并查集

文章目录 1.什么是并查集&#xff1a;2、并查集的基本结构3.现实问题和代码实现链接4.代码实现 1.什么是并查集&#xff1a; 对于一个集合S{a1,a2,……an-1,an}&#xff0c;这是可以对集合S进一步划分&#xff1a;S1&#xff0c;S2&#xff0c;……&#xff0c;Sm-1&#xff0…

阿里云迁移AWS视频点播技术攻坚

文章目录 &#x1f437; 背景&#x1f9a5; 简述&#x1f425; Aws服务&#x1f99c; AWS CloudFormation&#x1f41e; 问题&#x1f409; 落地方案&#x1f989; Aws vs Aliyun&#x1f344; 避坑指南 &#x1f437; 背景 由于AWS整体成本略低于阿里云&#xff0c;公司决定将…

R 批量对多个变量进行单因素方差分析 批量计算均值±标准差

多个变量批量进行单因素方差 R实现 文章目录 一、批量生成均值标准差 P值二、添加协变量单因素方差分析&#xff0c;生成校正P值三、在分层情况下进行单因素方差分析四、添加协变量和交互项的单因素方差分析&#xff0c;生成交互项的P值 一、批量生成均值标准差 P值 数据结构如…

Android AAudio

文章目录 基本概念启用流程基本流程HAL层对接数据流计时模型调试 基本概念 AAudio 是 Android 8.0 版本中引入的一种音频 API。 AAudio 提供了一个低延迟数据路径。在 EXCLUSIVE 模式下&#xff0c;使用该功能可将客户端应用代码直接写入与 ALSA 驱动程序共享的内存映射缓冲区…

数字图像处理(图像灰度变换、图像直方图及均衡、图像中值滤波、图像空域锐化增强、图像频域滤波)

数字图像处理&#xff08;图像灰度变换、图像直方图及均衡、图像中值滤波、图像空域锐化增强、图像频域滤波&#xff09; 目录 1 图像灰度变换 1.1 灰度线性变换 1.2 图像二值化 1.3 负象变换 1.4 灰度非线性变换 1.5 程序设计流程图 2 图像直方图及均衡 2.1 直方图 2…

Linux 服务器磁盘满了怎么办?详细清理大文件指南

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

Agilent安捷伦E4407B频谱分析仪26.5GHz

E4407B是安捷伦ESA-E系列频谱分析仪&#xff0c;它是一款能够适应未来需要的中性能频谱分析仪解决方案。该系列在测量速度、动态范围、精度和功率分辨能力上&#xff0c;都为类似价位的产品建立了性能标准。其灵活的平台设计使得研发、制造和现场服务工程师能够自定义产品&…

特征工程筛选重要变量

特征筛选主要分为3个方法&#xff1a;过滤法、嵌入法&#xff08;经典的一些树模型比如xgboost&#xff09;、包裹法&#xff08;经典的RFECV&#xff0c;RFE递归特征消除法&#xff09; 过滤法更快速&#xff0c;但更粗糙。 包装法和嵌入法更精确&#xff0c;比较适合具体到算…

【代码随想录】刷题笔记Day46

前言 刚考完自辩&#xff0c;Chat回答举例什么的真方便。早上做组会PPT去了&#xff0c;火速来刷题&#xff01; 139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 单词是物品&#xff0c;字符串s是背包&#xff0c;单词能否组成字符串s&#xff0c;就是问物品能不能把…

SpringBoot学习(五)-Spring Security配置与应用

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! Spring Security Spring Security是一个基于Java的开源框架&#xff0c;用于在Java应用程…

【深度学习】cv领域中各种loss损失介绍

文章目录 前言一、均方误差二、交叉熵损失三、二元交叉熵损失四、Smooth L1 Loss五、IOU系列的loss 前言 损失函数是度量模型的预测输出与真实标签之间的差异或误差&#xff0c;在深度学习算法中起着重要作用。具体作用&#xff1a; 1、目标优化&#xff1a;损失函数是优化算法…

文件归类妙招:用关键字替换改扩展名方法,文件重命名技巧

在日常工作中&#xff0c;文件的数量会随着时间的推移不断增加。如果文件没有得到适当的归类和整理&#xff0c;就会导致很难找到所需的文件。所以文件归类是非常重要的任务。现在来看云炫文件管理器一些实用的文件归类妙招&#xff1a;用关键字替换修改文件扩展名的方法&#…

Kubernetes复习总结(二):Kubernetes容器网络

2、Kubernetes容器网络 1&#xff09;、Docker网络原理 Docker默认使用的网络模型是bridge&#xff0c;这里只讲bridge网络模型 1&#xff09;容器之间通信原理 当安装完docker之后&#xff0c;docker会在宿主机上创建一个名叫docker0的网桥&#xff0c;默认IP是172.17.0.1…

AI动作冒险电影《加勒比海盗:失落的宝藏》(下)

AI动作冒险电影《加勒比海盗&#xff1a;失落的宝藏》&#xff08;下&#xff09; 在宝藏岛屿的探险中&#xff0c;杰克船长不断遭遇铁钩胡克的追击&#xff0c;并陷入了一系列生死危机中。然而&#xff0c;当杰克终于找到宝藏所在的洞穴时&#xff0c;却发现了一个令人震惊的事…

HarmonyOS 开发基础(五)Button

HarmonyOS 开发基础&#xff08;五&#xff09;Button Entry Component struct Index {build() {Row() {Column() {// Button&#xff1a;ArkUI 的基础组件 按钮组件// label 参数&#xff1a;文字型按钮Button(我是按钮)// width&#xff1a;属性方法&#xff0c;设置组件的宽…