当前位置:   article > 正文

《Leaflet 基础知识点》- 自定义控件 - 图层级别_leaflet实现自定义控件

leaflet实现自定义控件

一、说明

使用 L.Control 对象做扩展(API 地址) 

 二、控件

这里取名为 MyZoomLevel.js

  1. // 图层级别
  2. L.Control.MyZoomLevel = L.Control.extend({
  3. options: {
  4. position: 'bottomleft'
  5. },
  6. onAdd: function (map) {// L.Control原生方法
  7. this._container = L.DomUtil.create('div', `gm-leaflet-control-zoomlevel`);
  8. L.DomEvent.disableClickPropagation(this._container);
  9. map.on('zoomend', this._onZoomEnd, this);
  10. this._container.innerHTML = `${map.getZoom()} 级`;
  11. return this._container;
  12. },
  13. onRemove: function (map) {// L.Control原生方法
  14. debugger
  15. // 删除DOM
  16. L.DomUtil.remove(this._container);
  17. // 删除监听
  18. map.off('zoomend', this._onZoomEnd);
  19. },
  20. _onZoomEnd: function (e) {// 自定义方法
  21. this._container.innerHTML = `${e.target.getZoom()} 级`;
  22. }
  23. });
  24. L.Map.mergeOptions({
  25. positionControl: false
  26. });
  27. L.Map.addInitHook(function () {
  28. if (this.options.positionControl) {
  29. this.positionControl = new L.Control.MyZoomLevel();
  30. this.addControl(this.positionControl);
  31. }
  32. });
  33. // 添加到L.control 控件中,注意这里是小写
  34. L.control.myZoomLevel = function (options) {
  35. return new L.Control.MyZoomLevel(options);
  36. };

知识点:

1、 代码第 2、29、35 行,扩展控件使用 L.Control,注意首字母是大写。

2、代码第 34 行,添加到 L.control,注意首字母小写。

3、代码第 6 和13 行,onAdd 和 onRemove 是 L.Control 原生方法。代码第 20 行,_onZoomEnd 是自定义方法。监听地图缩放事件。

三、使用

  1. let zoomLevel = L.control.myZoomLevel(
  2. {
  3. position: 'bottomleft'// 显示位置,有4个'topleft', 'topright(默认)', 'bottomleft' or 'bottomright'
  4. }
  5. ).addTo(map)

四、移除

  1. // 继承 L.Control remove 方法
  2. zoomLevel.remove();

五、效果

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号