Google maps 连续拖动时,map.getCenter.lng()会扩展到-180以外。我怎样才能阻止它?

Google maps 连续拖动时,map.getCenter.lng()会扩展到-180以外。我怎样才能阻止它?,google-maps,google-maps-api-3,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 这是不是GMAP中的一个bug 谢谢 有些人会说这是一个bug,而另一些人会说这是一个特性。公平地说,这似乎是“正确

这是我的密码:

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

这是不是GMAP中的一个bug


谢谢

有些人会说这是一个bug,而另一些人会说这是一个特性。公平地说,这似乎是“正确”的行为,但它不会给你任何有用的结果

我相信最常见的克服这个“特性”的方法是确保你的值永远不低于-180 og高于180 og。实现这一点的简单方法是始终拨打电话:

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

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

有些人会说这是一个bug,而另一些人会说这是一个特性。公平地说,这似乎是“正确”的行为,但它不会给你任何有用的结果

我相信最常见的克服这个“特性”的方法是确保你的值永远不低于-180 og高于180 og。实现这一点的简单方法是始终拨打电话:

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

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

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

在上面的链接中,您可以创建一个新的LatLng对象,该对象将正确地包裹经度

var center = map.getCenter();

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

我发现,使用我自己的数学除以180,我仍然会遇到一些人为的情况,即围绕本初子午线拖动一两个像素会导致计算不正确的测量值-也许我的数学不是很好,但在任何情况下-在我看来,上面似乎是一个更好的修复方法。

只是更新此以添加一个答案:

在上面的链接中,您可以创建一个新的LatLng对象,该对象将正确地包裹经度

var center = map.getCenter();

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

我发现,用我自己的数学除以180,我仍然会遇到一些人为的情况,即围绕本初子午线拖动一两个像素会导致计算不正确的测量值——也许我的数学不是很好,但无论如何——在我看来,上述情况是一个更好的解决办法。

谢谢Kasper。我认为gmap应该提供两个选项,一个是查看用户滚动了多少次,另一个是数字。根据您的建议,我提出了
var lngCenter=map.getCenter().lng();var rem=lngCenter%180;if(Math.abs(parseInt(lngCenter/180))%2!==0{if(rem<0)rem+=180;else rem-=180;}lngCenter=rem我能做什么更有效率的事吗?谢谢Kasper。我认为gmap应该提供两个选项,一个是查看用户滚动了多少次,另一个是数字。根据您的建议,我提出了
var lngCenter=map.getCenter().lng();var rem=lngCenter%180;if(Math.abs(parseInt(lngCenter/180))%2!==0{if(rem<0)rem+=180;else rem-=180;}lngCenter=rem我能做什么更有效率的事吗?