Leaflet map setView()是否不准确?

时间:2014-04-02 08:28:41

标签: leaflet

在传单地图中,我期待:

map = L.map(...);
...
var latlng1 = L.latLng(-121.99574947357178, 37.33783464876286);
map.setView(latlng1,12, {animate: false});
var latlng2 = map.getCenter();
if (!_.isEqual(latlng1, latlng2)) {
    console.log("latlng2 should be the same as latlng1!", latlng2);
}

但事实上,在运行此代码时,latlng2会被分配:

-121.99562072753906, 37.33795407160059

看起来这是一个精确的问题,因为坐标确实很接近。

我的问题: 我希望用setView:

来使用动画
map.setView(latlng1,12, {animate: true})

因为在动画完成时没有调用回调,我希望使用getCenter()_.isEqual(在moveend事件中)来比较请求的和实际坐标。 由于实际坐标不相同,我可以写一个isCloseEnough()函数。 老实说,我觉得我的方法是关闭的,所以我正在寻找经验丰富的开发人员的建议。

这是一种合理的方法还是有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

isCloseEnough是最好的选择:floating point numbers的本质是绝对比较如果你用两者之间的数字做任何算术都不是非常有用。