背景

最近需要为某单位开发地图展示系统,因此开始涉略和使用Leaflet这个轻量级地图库。

创建基础地图需要以下几步

  1. 引入相关js和css文件,创建基础地图
<div id="map"></div>

var map = L.map("map", {
center: [29.758447, 121.6345],
zoom: 10,
maxZoom: 17,
});
  1. 初始化完成地图之后还需要添加底图,添加底图可以使用官方推荐的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]);
  1. 底图添加完成后效果如下

    基础天地图并且附带地图标注



    卫星天地图,不附带标注

  2. 右下角的实时坐标显示
// 通过监听地图的mousemove事件获取实时坐标,然后在页面上进行展示
this.map.on("mousemove", (e) => {
this.mapll =
"坐标:" +
e.latlng.lng.toFixed(6) +
"," +
e.latlng.lat.toFixed(6);
});
  1. 左下角包含底图切换以及置灰功能
// 通过移除和添加图层来实现底图切换
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]);
}
  1. 至此,一个基础的地图模块创建完成

使用Leaflet创建地图模块的更多相关文章

  1. Cocos2d-x源代码解析(1)——地图模块(3)

    接上一章<Cocos2d-x源代码解析(1)--地图模块(2)> 通过前面两章的分析,我们能够知道cocos将tmx的信息结构化到 CCTMXMapInfo.CCTMXTilesetInf ...

  2. Cocos2d-x源代码解析(1)——地图模块(1)

    cocos通过加载tiled 生成的tmx文件来生成游戏地图.本文主要分析cocos加载地图模块的源代码.   如图所看到的,地图加载模块由以上几个类组成. 对外的入口是类CCTMXTiledMap, ...

  3. [Cocos2D-x For WP8]Tile Map创建地图

    在Cocos2D-x里面创建Tile Map地图是需要用到.tmx的地图文件的,那么创建Tile Map地图文件,我们可以通过地图编辑器来创建,地图编辑器可以在网站:http://www.mapedi ...

  4. HTML5结合百度地图API创建地图应用

    具体的百度地图API的使用方法查看百度地图API里的DEMO <style> #div1{ width:400px; height:400px; border:1px #000 solid ...

  5. js调用百度地图API创建地图

    技术交流群:233513714 <html xmlns="http://www.w3.org/1999/xhtml"><head runat="serv ...

  6. js调用百度地图API创建地图,搜索位置

    实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...

  7. eclipse创建maven模块工程

    创建maven模块项目,可以使用eclipse工具来完成. 1.创建父工程,注意,要选择maven-archetype-site-simple new --> maven project 填写项 ...

  8. eclipse创建多模块maven工程小结

    创建maven工程步骤 1 新建一个maven工程,如下图所示: 2 选择项目名称(或项目目录),如下图所示: 3 填写maven工程相关信息,注意父maven工程的packing方式是pom,如下图 ...

  9. YII 创建后台模块

    1,在protected/config/main.php目录下修改如下目录 'modules'=>array( // uncomment the following to enable the ...

随机推荐

  1. C++算法代码——你要乘坐的飞碟在这里[usaco]

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1056 题目描述 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO. 这些不明 ...

  2. Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Properties集合、打印流)

    1.IO简介 IO(输入输出)通过java.io包下的类和接口来支持,包下包括输入.输出两种IO流,每种输入输出流又可分为字符流和字节流两大类. 2.File类 File类是io包下与平台无关的文件和 ...

  3. 2021-2-25:对于 Java MMAP,如何查看文件映射脏页,如何统计MMAP的内存大小?

    我们写一个测试程序: public static void main(String[] args) throws Exception { RandomAccessFile randomAccessFi ...

  4. Vue3.0+Electron聊天室|electron跨平台仿QQ客户端|vue3.x聊天应用

    基于vue3+electron11跨端仿制QQ桌面应用实战Vue3ElectronQchat. 使用vue3+electron+vuex4+ant-design-vue+v3scroll+v3laye ...

  5. ubuntu系统共享桌面的使用和配置

    内容转载自我的博客 目录 1. ubuntu共享桌面 2. 局域网登录远程桌面 2.1 ubuntu使用remmina登录远程桌面 2.2 在windows登录远程桌面 2.3 Android使用RD ...

  6. javascript中的模块系统

    目录 简介 CommonJS和Nodejs AMD异步模块加载 CMD ES modules和现代浏览器 在HTML中使用module和要注意的问题 简介 在很久以前,js只是简单的作为浏览器的交互操 ...

  7. 基于 react + electron 开发及结合爬虫的应用实践🎅

    前言 Electron 是一个可以使用 Web 技术如 JavaScript.HTML 和 CSS 来创建跨平台原生桌面应用的框架.借助 Electron,我们可以使用纯 JavaScript 来调用 ...

  8. 9.Vue之webpack打包基础---模块化思维

    主要内容: 1. 什么是模块化思维? 2.  ES6包的封装思想 一.什么是模块化思维呢? 现实工作中, 一个项目可能会有多个人同时开发. 然后, 将所有人开发的内容, 合并到一个文件中. 比如: 1 ...

  9. AI在出行场景的应用实践:路线规划、ETA、动态事件挖掘…

    ​前言:又到春招季!作为国民级出行服务平台,高德业务快速发展,大量校招/社招名额开放,欢迎大家投递简历,详情见文末.为帮助大家更了解高德技术,我们策划了#春招专栏#的系列文章,组织各业务团队的高年级同 ...

  10. 【老孟Flutter】Flutter 2的新功能

    老孟导读:昨天期待已久的 Flutter 2.0 终于发布了, Flutter Web和Null安全性趋于稳定,Flutter桌面安全性逐渐转向Beta版! 原文链接:https://medium.c ...