使用Leaflet创建地图模块
背景
最近需要为某单位开发地图展示系统,因此开始涉略和使用Leaflet这个轻量级地图库。
创建基础地图需要以下几步
- 引入相关js和css文件,创建基础地图
 
<div id="map"></div>
var map = L.map("map", {
	center: [29.758447, 121.6345],
	zoom: 10,
	maxZoom: 17,
});
- 初始化完成地图之后还需要添加底图,添加底图可以使用官方推荐的Leaflet.ChineseTmsProviders插件,
该插件可以实现天地图、高德、谷歌、百度等地图的加载。但是加载百度地图需要进行坐标系转换,否则无法加载。 
// TianDiTu.Normal.Map为基础地图
var normalm = L.tileLayer.chinaProvider('TianDiTu.Normal.Map', {
	maxZoom: 17,
	minZoom: 5
});
// TianDiTu.Normal.Annotion为地图标注
var normala = L.tileLayer.chinaProvider('TianDiTu.Normal.Annotion', {
	maxZoom: 17,
	minZoom: 5
});
// 使用L.layerGroup将normalm和normala合并为同一个图层组,以便进行统一的移除、修改操作
// 然后再将合并的图层组添加至地图进行显示
this.baseMapLayer = L.layerGroup([normalm, normala]).addTo(this.map);
// 创建卫星底图,不带标注,不直接添加到地图中,后续通过点击事件进行切换
var wxmap = L.tileLayer.chinaProvider('TianDiTu.Satellite.Map', {
	maxZoom: zoomLevel,
	minZoom: 5
});
this.wxMapLayer = L.layerGroup([wxmap]);
- 底图添加完成后效果如下
基础天地图并且附带地图标注

卫星天地图,不附带标注

 - 右下角的实时坐标显示
 
// 通过监听地图的mousemove事件获取实时坐标,然后在页面上进行展示
this.map.on("mousemove", (e) => {
	this.mapll =
	"坐标:" +
	e.latlng.lng.toFixed(6) +
	"," +
	e.latlng.lat.toFixed(6);
});
- 左下角包含底图切换以及置灰功能
 
// 通过移除和添加图层来实现底图切换
this.map.removeLayer();
this.map.addLayer();
// 通过操作style添加统一样式,实现地图的置灰
var style = document.getElementsByTagName("style")[0];
// 在线地图均以瓦片图形式加载,默认是在leaflet-tile-pane层,因此需要对该层下的图片添加灰度的css样式
// 通过添加和移除样式即可实现置灰功能的切换
if (newValue) {
style.appendChild(
	document.createTextNode(`div.leaflet-tile-pane
	img.leaflet-tile.leaflet-tile-loaded {
		filter: grayscale(1);
	}`)
);
} else {
style.removeChild(style.childNodes[1]);
}
- 至此,一个基础的地图模块创建完成
 
使用Leaflet创建地图模块的更多相关文章
- Cocos2d-x源代码解析(1)——地图模块(3)
		
接上一章<Cocos2d-x源代码解析(1)--地图模块(2)> 通过前面两章的分析,我们能够知道cocos将tmx的信息结构化到 CCTMXMapInfo.CCTMXTilesetInf ...
 - Cocos2d-x源代码解析(1)——地图模块(1)
		
cocos通过加载tiled 生成的tmx文件来生成游戏地图.本文主要分析cocos加载地图模块的源代码. 如图所看到的,地图加载模块由以上几个类组成. 对外的入口是类CCTMXTiledMap, ...
 - [Cocos2D-x For WP8]Tile Map创建地图
		
在Cocos2D-x里面创建Tile Map地图是需要用到.tmx的地图文件的,那么创建Tile Map地图文件,我们可以通过地图编辑器来创建,地图编辑器可以在网站:http://www.mapedi ...
 - HTML5结合百度地图API创建地图应用
		
具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid ...
 - js调用百度地图API创建地图
		
技术交流群:233513714 <html xmlns="http://www.w3.org/1999/xhtml"><head runat="serv ...
 - js调用百度地图API创建地图,搜索位置
		
实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...
 - eclipse创建maven模块工程
		
创建maven模块项目,可以使用eclipse工具来完成. 1.创建父工程,注意,要选择maven-archetype-site-simple new --> maven project 填写项 ...
 - eclipse创建多模块maven工程小结
		
创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...
 - YII  创建后台模块
		
1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...
 
随机推荐
- Elasticsearch 及其套件的安装上手
			
前言 本文主要讲解Elasticsearch及其套件Kibana.Logstash的安装及启动,还讲解如何导入数据用于后续的实验. 说明:Elasticsearch是基于Java开发的,所以如果是下载 ...
 - 【微前端】微前端最终章-qiankun指南以及微前端整体探索
			
序 这才2月中旬,广州就已经渐渐地进入了夏季,--夏天总是让人焦虑的.过年闲暇时间写下了微前端这系列的终章,欢迎拍砖.如果你习惯直接上手代码,不妨跳到实践一节,直接上代码教程玩一玩. qiankun原 ...
 - Python安装教程
			
1.下载好Python安装包后,双击打开(第一个是32位,第二个是64位,根据自己电脑位数进行选择): 2.打开后如下,先将下方的Python添加到系统环境变量勾选上,再点击第一个默认安装即可: 3. ...
 - 链接服务器sql语句
			
EXEC sp_addlinkedserver @server='sha',--被访问的服务器别名 @srvproduct='', @provider='SQLOL ...
 - SpringBoot整合Mybatis 使用generator自动生成实体类代码、Mapper代码、dao层代码
			
1.新建一个SpringBoot项目,并引入Mybatis和mybatis-generator相关的依赖. <dependency> <groupId>org.springfr ...
 - 如何将文件夹取消svn关联
			
随便在什么目录新建一个文本文件,文件名随便,将文本文件打开,将下面的文字复制到文本文件中: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHI ...
 - Java网络编程UDP通信原理
			
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
 - 看完我的笔记不懂也会懂----Ajax
			
Ajax(Asynchronous JavaScript And XML) - 本次学习所用到的插件 - XML - JSON - 关于AJAX - HTTP协议 - AJAX重点之XMLHttpRe ...
 - 洛谷 P4747 [CERC2017]Intrinsic Interval 线段树维护连续区间
			
题目描述 题目传送门 分析 考虑对于 \([l,r]\),如何求出包住它的长度最短的好区间 做法就是用一个指针从 \(r\) 向右扫,每次查询以当前指针为右端点的最短的能包住 \([l,r]\) 的好 ...
 - 操作系统---在内核中重新加载GDT和堆栈
			
摘要 用BIOS方式启动计算机后,BIOS先读取引导扇区,引导扇区再从外部存储设备中读取加载器,加载器读取内核.进入内核后,把加载器中建立的GDT复制到内核中. 这篇文章的最大价值也许在末尾,对C语言 ...