什么是leafletjs
Leafletjs是一个开源的JavaScript库,用于创建移动友好的交互式地图。它只有42KB的大小,但拥有大多数开发者所需的地图功能。Leafletjs的设计理念是简单、高效和易用。它可以在所有主流的桌面和移动平台上流畅地运行,可以通过众多的插件进行扩展,拥有一个美观、易用和完善的API文档,以及一个简洁、可读的源代码,方便开发者进行贡献。
自定义控件DEMO
自定义控件示例如下,你也可以打开自定义控件DEMO查看
如何自定义控件
Leafletjs提供了一个基类L.Control,用于创建自定义的地图控件。我们可以通过继承这个类,重写initialize、onAdd和onRemove方法,来实现自己的控件逻辑。例如,我们可以创建一个显示当前地图中心坐标的控件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| var CenterControl = L.Control.extend({ initialize: function (options) { L.Util.setOptions(this, options); }, onAdd: function (map) { var container = L.DomUtil.create('div', 'leaflet-bar leaflet-control leaflet-control-custom'); container.style.backgroundColor = 'white'; container.style.width = 'auto'; container.style.height = '30px'; var span = L.DomUtil.create('span', '', container); span.id = 'center-coord'; span.style.lineHeight = '30px'; span.style.padding = '10px'; var center = map.getCenter(); span.innerHTML = 'Lat: ' + center.lat + ', Lng: ' + center.lng; map.on('move', function () { center = map.getCenter(); console.log(center); span.innerHTML = 'Lat: ' + center.lat + ', Lng: ' + center.lng; }); return container; }, onRemove: function (map) { map.off('move'); } }); var centerControl = new CenterControl({ position: 'bottomright' }); centerControl.addTo(map);
|