2014-04-02 32 views
0

在单张地图,我期望:Leaflet map setView()不准确吗?

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

A isCloseEnough这里是最好的选择:floating point numbers的性质是这样的,绝对比较不是非常有用,如果你做任何算术与中间的数字。