宣传单:如何更改地图中心和缩放级别点击circleMarker?

时间:2015-11-06 07:34:01

标签: leaflet

我正在使用一些circleMarkers在地图上工作。当用户点击其中一个circleMarker时,我想将地图置于此circleMarker中心并放大。当我在多面体图层上尝试此操作时,它会起作用,但我在circleMarkers上没有成功。有人可以帮助我吗?

以下是我的circleMarkers的代码:

WITH q1 AS 
( 
       SELECT xy, 
              ROWNUM r 
       FROM   prof unpivot (xy FOR x IN (x1, 
                                         x2, 
                                         x3 , 
                                         x4, 
                                         x5  --add rest of the columns here
                                           ))), 
q2 AS 
( 
         SELECT   refx, 
                  refy, 
                  ROWNUM r 
         FROM     crossref 
         ORDER BY refx, 
                  refy) 
SELECT     q1.xy, 
           q2.refy 
FROM       q1 
inner join q2 
ON         q1.r = q2.r;

Here是指向完整地图的链接。

谢谢。

2 个答案:

答案 0 :(得分:2)

这可以非常简单地实现。 让我们假设marker指向您的传单标记,并map指向您的传单地图。

快捷方式(推荐)

marker.on("click", function(event) {
    map.setView(marker.getLatLng(), 16);
}, marker);

在这里,我甚至不计算所需的缩放级别,因为我认为传单无论如何都必须缩放到最大级别。

即使L.LayerGroup的要点是对多个标记进行分组,我也可以将我的标记添加到LayerGroup

无论如何,更精确的方式

marker.on("click", function(event) {
    map.setView(marker.getLatLng(), map.getBoundsZoom(layerGroup.getBounds());
}, marker);

请注意,快速方式也可以很好地完成。第二种解决方案可能看起来更精确,但也更慢,并暗示使用LayerGroup,这不是它的设计工作方式(为每个标记创建一个新的图层组)。

不要忘记花时间阅读docs,它设计精良且易于理解。

答案 1 :(得分:-1)

我找到了解决方案:

    function onClick(e) {map.setView(this.getLatLng(),15);}

    L.geoJson(villes, {
        style: style1,
        pointToLayer: function (feature, latlng)
            {
                return L.circleMarker(latlng).bindLabel( feature.properties.Name, {className: "ville", noHide: true }).on('click', onClick);

            }           
            }
    )
                            .addTo(zoom1)
                            .showLabel;

谢谢搁浅的孩子的帮助。