同时使用panTo和panBy

时间:2012-09-17 16:47:09

标签: javascript leaflet

我想创建一个带有一些引脚的地图(使用传单)。当用户点击其中一个时,地图应移动,直到图钉位于水平中心地图的底部。

我的地图是400像素高,所以我正在使用此代码:

map.panTo(new L.LatLng(lat, lng));
map.panBy(new L.Point(0, -200));

它的工作就像一个魅力 - 只有IE有一些问题:它开始向地图的中心移动(panTo),但一旦它的状态向底部移动( panBy)停止向中心移动。

我如何结合这两个动作?我不能等到panTo将地图居中,因为如果地图位于地图的下半部分,这会导致地图上下跳跃。

2 个答案:

答案 0 :(得分:6)

从传单文档中,您可以使用以下方法将纬度/经度点作为像素:

latLngToPoint( <LatLng> latlng, <Number> zoom )

修改它,然后用:

将其转换回lat / long

pointToLatLng( <Point> point, <Number> zoom )

来源:http://leaflet.cloudmade.com/reference.html#icrs

答案 1 :(得分:0)

您还可以使用以下两个函数,可以直接在地图对象上调用:

// get your coordinates from marker or map.getCenter() or something else
let pixelPosition = map.latLngToLayerPoint(coord);
// edit pixel coordinates in pixelPosition object
let latLng = map.layerPointToLatLng(point);
map.setView(latLng);