我正在使用一些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是指向完整地图的链接。
谢谢。
答案 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;
谢谢搁浅的孩子的帮助。