关键词搜索

源码搜索 ×
×

Leaflet文档阅读笔记-Extending Leaflet: Handlers and Controls笔记

发布2019-09-11浏览4527次

详情内容

目录

 

官方解析

博主栗子


 

官方解析

Leaflet 1.0中出现了处理者这个新概念,处理浏览器里的dom事件单击,双击,地图滑动及map状态的改变。

当处理者启动时调用addHooks()函数,未启动时调用removeHooks(),结构如下:

  1. L.CustomHandler = L.Handler.extend({
  2. addHooks: function() {
  3. L.DomEvent.on(document, 'eventname', this._doSomething, this);
  4. },
  5. removeHooks: function() {
  6. L.DomEvent.off(document, 'eventname', this._doSomething, this);
  7. },
  8. _doSomething: function(event) { … }
  9. });

下面这个是当设备倾斜时平移地图(此处的代码没有试过,不知道能不能成功)!

  1. L.TiltHandler = L.Handler.extend({
  2. addHooks: function() {
  3. L.DomEvent.on(window, 'deviceorientation', this._tilt, this);
  4. },
  5. removeHooks: function() {
  6. L.DomEvent.off(window, 'deviceorientation', this._tilt, this);
  7. },
  8. _tilt: function(ev) {
  9. // Treat Gamma angle as horizontal pan (1 degree = 1 pixel) and Beta angle as vertical pan
  10. this._map.panBy( L.point( ev.gamma, ev.beta ) );
  11. }
  12. });

下面的代码是映射

L.Map.addInitHook('addHandler', 'tilt', L.TiltHandler);

如果映射与处理程序名相同,那么默认是开启的

var map = L.map('mapDiv', { tilt: true });

下面这个例子是移动浏览器的,没有用移动浏览器试,在此不说了!

下面是控制,这个提供了一个例子,这个例子是给地图加一个水印(这个水印只是像水印,并不是真正的水印,获取瓦片后,图片还是没有水印)

  1. L.Control.Watermark = L.Control.extend({
  2. onAdd: function(map) {
  3. var img = L.DomUtil.create('img');
  4. img.src = '../../docs/images/logo.png';
  5. img.style.width = '200px';
  6. return img;
  7. },
  8. onRemove: function(map) {
  9. // Nothing to do here
  10. }
  11. });
  12. L.control.watermark = function(opts) {
  13. return new L.Control.Watermark(opts);
  14. }
  15. L.control.watermark({ position: 'bottomleft' }).addTo(map);

 

博主栗子

下面写一个为地图加水印的例子!

程序运行截图如下:

这里加了一个很骚气的小黄人。

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Hello World</title>
  5. <meta charset="utf-8" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />
  8. <link rel="stylesheet" href="leaflet.css" />
  9. <script src="leaflet.js"></script>
  10. <script src="leaflet-tilelayer-wmts-src.js"></script>
  11. <script src="echarts.js"></script>
  12. <style>
  13. html, body {
  14. height: 100%;
  15. margin: 0;
  16. }
  17. #map {
  18. width: 100%;
  19. height: 100%;
  20. }
  21. .chart{
  22. width: 600px;
  23. height: 300px;
  24. background-color: #fff;
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <div id='map'></div>
  30. <script type="text/javascript">
  31. var ign = new L.TileLayer.WMTS( "http://XXX.XXX.XXX.XXX:8080/geoserver/gwc/service/wmts" ,
  32. {
  33. layer: 'GG_9:gg_9',
  34. tilematrixset: "EPSG:900913",
  35. Format : 'image/png',
  36. TileMatrix: 'EPSG:900913:8'
  37. }
  38. );
  39. var map = L.map('map', {
  40. minZoom: 4,
  41. maxZoom: 7
  42. }).setView([32, 118], 7);
  43. L.control.scale({'position':'bottomleft','metric':true,'imperial':false}).addTo(map);
  44. map.addLayer(ign);
  45. map.invalidateSize(true);
  46. //添加的数据
  47. L.Control.mark1 = L.Control.extend({
  48. onAdd: function(map){
  49. var img = L.DomUtil.create('img');
  50. img.src = './img/marker6.ico';
  51. return img;
  52. },
  53. onRemove: function(map){
  54. }
  55. });
  56. L.control.mark1 = function(opts){
  57. return new L.Control.mark1(opts);
  58. }
  59. L.control.mark1({position : 'bottomleft'}).addTo(map);
  60. //添加的数据
  61. </script>
  62. </body>
  63. </html>

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载