Leaflet 自定义Popup弹窗

首先感谢 Leaflet - 自定义弹出框(popup)提供的扩展

但是实际结合组件化的使用过程中,对于弹窗内元素的高宽存在不确定性(即初始化时不传入容器的宽高),所以需要进一步对Popup组件进行拓展,以便适应更自由的窗体组件

稍微解读了下Leaflet对于popup组件的源代码,其实popup对于整体的地图容器来说,也只是地图上根据像素位置定位的元素之一,因此对其的控制也和其它图层一样,对初始化、更新、层级变化做监听,修改位置和样式即可,以下是代码(ES5)

// 重写setTransform,由于不再固定宽度,所以增加translateX(-50%)水平居中
function setTransform(el, offset, scale) {
   
   
  var pos = offset || new L.Point(0, 0);
  el.style[L.DomUtil.TRANSFORM] =
    (L.Browser.ie3d
      ? "translate(" + pos.x + "px," + pos.y + "px,0) translateX(-50%)"
      : "translate3d(" + pos.x + "px," + pos.y + "px,0) translateX(-50%)") +
    (scale ? " scale(" + scale + ")" : "");
}
// 因为重写了setTransform,所以setPosition也要重新指向方法
function setPosition(el, point) {
   
   
  el._leaflet_pos = point;
  if (L.Browser.any3d) {
   
   
    setTransform(el, point);
  } else {
   
   
    el
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值