当连续拖动时,map.getCenter.lng()会超出-180。我怎么能阻止它?

时间:2011-10-06 20:57:26

标签: google-maps google-maps-api-3

继承我的代码:

google.maps.event.addListener(map, 'idle', function(e) {
    console.log(map.getCenter().lng();      
});

当反复水平拖动地图时,它会产生一个模式,例如: 0,-60,-120,-180,-240,-300

但我希望: 0,-60,-120,-180,120,60

这是gmaps中的错误吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

只需更新此内容即可从此处添加答案:

http://code.google.com/p/gmaps-api-issues/issues/detail?id=3247

如上面的链接,您可以创建一个新的LatLng对象,它将正确包装经度。

var center = map.getCenter();

var wrapped = new google.maps.LatLng(center.lat(), center.lng());

我发现用我自己的数学划分我的180,我仍然会遇到一些人为的情况,在素子午线周围的像素或两次拖动会导致计算错误的测量结果 - 也许我的数学不是很好,但是无论如何 - 以上似乎是一个更好的解决方案。

答案 1 :(得分:0)

有人会说一个错误,而其他人会说它是一个功能。公平地说,这似乎是“正确的”行为,但它并没有给你任何有用的结果。

我认为,通过这个“功能”最常见的方法是确保你的价值永远不会低于-180以上180.实现这一目标的一个简单方法是始终拨打电话:

map.getCenter().lng() % 180;

这将始终为您提供模数180,这是您减去180后的余数,直到该值在正确的范围内。