完全缩小后如何使用谷歌地图获得真正的界限

bra*_*rad 6 google-maps

我有一张地图,根据地图的gbounds显示位置点.例如,无论何时移动/缩放地图,我都会找到属于这些边界内的位置的边界和查询.不幸的是,当完全缩小时,我无法显示所有位置.原因是,gmaps将最小/最大长度报告为地图边缘的任何内容,但如果缩小到足够大,则可以获得排除可见位置的纵向范围.

例如,如果您缩放地图以便在最左侧和最右侧看到NorthAmerica两次.最小/最大长度约为:-36.5625至170.15625.但这几乎完全排除了位于-180到-60范围内的NorthAmerica.显然,这是麻烦,你可以清楚地看到大陆北美洲(两次),但是当我询问我在从谷歌地图的范围内的位置,不返回北美洲.

我找到min/max long的代码是:

bounds = gmap.getBounds();
min_lat = bounds.getSouthWest().lat()
max_lat = bounds.getNorthEast().lat()
Run Code Online (Sandbox Code Playgroud)

有没有人遇到这个,谁能建议一个解决方法?在我的头顶我只能做一个黑客攻击:检查缩放级别并在必要时将最小/最大拉特硬编码为-180/180,这绝对是不可接受的.

Mar*_*ark 0

这不是最优雅的解决方案,但我测试了它并且它确实有效。检查当前边界是否包含完整地图的边界。谷歌实际上并不包括北极和南极,所以我不得不对其进行调整以使其几乎一路向北和向南。

bounds = gmap.getBounds();
var fullEarth = new GLatLngBounds(new GLatLng(-85, 180), new GLatLng(85, -180)))
var isFull = bounds.containsBounds(fullEarth);
min_lat = isFull ? -90 : bounds.getSouthWest().lat()
max_lat = isFull ? 90 : bounds.getNorthEast().lat()

min_lng = isFull ? 180 : bounds.getSouthWest().lng()
max_lng = isFull ? -180 : bounds.getNorthEast().lng()
Run Code Online (Sandbox Code Playgroud)