Leaflet:如何在缩放开始之前获得lat lng的像素位置

时间:2015-01-23 14:25:57

标签: javascript svg d3.js leaflet mapbox

我想要转换:将SVG组转换为latLng像素位置,并在缩放后保持该位置。

我试过了:

map.on('zoomend', function(e) {...});

http://jsfiddle.net/L8dnsrnk/15/

但显然只会在变焦后触发,因此SVG不会像标记那样流畅地移动。

我已经尝试查看源代码以了解如何重新定位Leaflet标记,因为这实际上是我试图模仿的行为,但无济于事。如果有人有另一个建议来达到这个效果,我会感兴趣! :)

1 个答案:

答案 0 :(得分:1)

您需要通过执行以下操作来聆听“zoomanim”事件并获取圈子的新中心:

var coord = map._latLngToNewLayerPoint(new L.LatLng(51.5, -0.087), e.zoom, e.center);

标记的动画由CSS执行,特别是选择“.leaflet-zoom-anim .leaflet-zoom-animated”的类(在leaflet.css中查看)。您需要为SVG执行类似的操作。不要在SVG上设置“transform”属性,而是设置“transform”样式,然后在CSS中为该样式定义过渡动画。

请参阅以下小提琴:http://jsfiddle.net/inpursuit/mcatbrhk/1/