this.$modal.confirm 自定义按钮关闭_leaflet:自定义控件(扩展L.Control)

本文介绍了如何在leaflet中通过扩展L.Control创建自定义控件,并展示了将Vue应用于界面代码和逻辑,以实现地图上的自定义图标。虽然作者认为这种开发方式可能增加维护难度,但仍提出了其可行性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c6886fc5665fc00de2001e3bcaf8af98.png

L.Control是leaflet中所有控件的基类,如Scale,Zoom等。通过扩展 L.Control,可以在map容器上定义一些自定义控件(个人觉得这种方式并不好,开发维护起来比较麻烦,好的样式效果实现麻烦)。

下面我们尝试写一个自定义控件,在地图上显示我们的官网图标。

自定义一个控件:

L.Control.Logo = L.Control.extend({
        options: {
            position: 'topright' //初始位置

        },

        initialize: function (options) {
            L.Util.extend(this.options, options);

        },
        onAdd: function (map) {
            //创建一个class为 leaflet-control-container的div
            this._container = L.DomUtil.create('div', 'leaflet-control-container');
            //创建一个图片要素
            var img = L.DomUtil.create('img', 'leaflet-control-logo');

            img.id = 'leaflet-control-clegend';
            img.type = 'img';
            img.src = "./logo.jpg";
            this._legendimg = img;

            //创建一个关闭控件的按钮
            var closeButton = L.DomUtil.create('a', 'leaflet-control-button');
            closeButton.text = 'X';
            closeButton.id = 'leaflet-control-geosearch-close';
            this._closebutton = closeButton;


            this._container.appendChild(this._legendimg);
            this._container.appendChild(this._closebutton);

            //注册关闭事件
            L.DomEvent.addListener(this._closebutton, 'click', this._onCloseControl, this);

            return this._container;
        },
        /**
         *
         * @private
         */
        _onCloseControl: function () {
            this._map.options.Legend = false;
            this.remove(this._map);
        },
    });

使用该控件

L.control.logo = function (options) {
        return new L.Control.Logo(options)
    };
L.control.logo().addTo(leafletMap);

效果:

c18671a614769aa2859ad6ba48678b12.png

思考:

使用Vue完成界面代码和逻辑,集成到leaflet上,这个路线可行吗?应该可以,等下篇文章吧。

源码:

yafengstark/leaflet-book​github.com
f9a8a8b3e66bcd8f0d3f45e666d17af2.png

参考:

【Leafletjs】5.L.Control 自定义一个Control​www.cnblogs.com
5e0a3b9771c9e2aa18be20fd61cd1534.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值