3

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

我的地图高度为 400 像素,所以我使用以下代码:

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

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

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

4

2 回答 2

6

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

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

修改它,然后将其转换回纬度/经度:

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

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

于 2012-09-20T16:48:59.670 回答
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);
于 2020-08-20T12:26:57.780 回答