宣传单自定义控制位置:中心

时间:2014-05-20 14:11:38

标签: leaflet

我们正在连接一个眼动仪来控制传单地图(平移,缩放等)我们想要一个出现在地图中心的自定义控件(用于菜单功能)目前Leaflet不支持位置:'中心')(支持topleft等)的想法?

3 个答案:

答案 0 :(得分:6)

在传单上的地图上添加自定义控件就像那样。

例如徽标:

var logo= L.control({
    position : 'topleft'
});
logo.onAdd = function(map) {
    this._div = L.DomUtil.create('div', 'myControl');
    var img_log = "<div class="myClass"><img src=\"images/logo.png\"></img></div>";

    this._div.innerHTML = img_log;
    return this._div;

}
logo.addTo(map);

然后,您可以将CSS样式添加到myClass以使其居中:( 此部分尚未经过我自己的测试)

.myClass {
   padding-top:50%;
   padding-left: 50%;
}

答案 1 :(得分:3)

我知道这是一个老话题,但是无论如何,这是我的解决方法。

添加一些CSS:

.leaflet-center {
    left: 50%;
    transform: translate(-50%, 0%);
}

.leaflet-middle {
    top: 50%;
    position: absolute;
    z-index: 1000;
    pointer-events: none;
  transform: translate(0%, -50%);

}

.leaflet-center.leaflet-middle {
  transform: translate(-50%, -50%);
}

并修补位置方法。

L.Map.include({
  _initControlPos: function () {
    var corners = this._controlCorners = {},
      l = 'leaflet-',
      container = this._controlContainer =
        L.DomUtil.create('div', l + 'control-container', this._container);

    function createCorner(vSide, hSide) {
      var className = l + vSide + ' ' + l + hSide;

      corners[vSide + hSide] = L.DomUtil.create('div', className, container);
    }

    createCorner('top', 'left');
    createCorner('top', 'right');
    createCorner('bottom', 'left');
    createCorner('bottom', 'right');

    createCorner('top', 'center');
    createCorner('middle', 'center');
    createCorner('middle', 'left');
    createCorner('middle', 'right');
    createCorner('bottom', 'center');
  }
});

Now you have 5 new positions to use.

答案 2 :(得分:2)

您可以简单地将.leaflet-left类重写为此类,并且您的控件将水平居中。

jstack

要垂直居中,只需将类.leaflet-top覆盖到:

jstack

注意:这些更改将影响地图上的其他控件,例如缩放控件。

修改

如果您想将功能添加到传单以便其他控件不受影响,您可以这样做:

leaflet.js:从第4900行开始,我相信?

// Has Discounts
$scope.isDiscountAreaOpen = function(val) {
    if (val == "true") {
        return true;
    } else {
        return false;
    }
};

添加以下两行:

.leaflet-left {
    left: 50%;
    transform: translate(-50%, 0%);
}

这将允许使用头寸'topcenter'和'bottomcenter'

然后只需为'leaflet-center'添加css类:

.leaflet-top {
    top: 50%;
    transform: translate(0%, -50%);
}