Google Maps v2 Android - 如何阻止用户将标记放置在地图边界之外?

时间:2014-02-14 21:03:21

标签: android google-maps

我正在使用GMS中的Google地图创建一个类似于GeoGuessr的Android应用程序,但我已收到用户的通知,如果您将标记放在地图顶部或底部的边界之外(在“方格”区域,它设置一个距离实际位置约150公里的纬度

我不想限制实际游戏,所以理想情况下我想设置一个边界,用户不能放置标记 我尝试使用地图中的Bounds,结果如下:

LatLng ne = new LatLng(85, 180);           
LatLng sw = new LatLng(-85, -180);

LatLngBounds Bounds = new LatLngBounds(sw,ne);

这一次每次都会导致出界

LatLngBounds Bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
new LatLngBounds(sw,ne);

这个没有变化,大概是因为它设置了相同的边界(mMap是当前初始化的地图)

举个例子,这是我的意思截图: Example, marker is out of bounds of map

我能做什么的想法?

1 个答案:

答案 0 :(得分:2)

在行星和其他球形物体的表面上,-180与180相同。您需要计算一个小于“一位”的值。

double smallerThan180 = Double.longBitsToDouble(Double.doubleToLongBits(180.0) - 1);
LatLng southWest = new LatLng(-85.0, -180.0);
LatLng northEast = new LatLng(85.0, smallerThan180);
LatLngBounds boundsOfDrawnWorld = new LatLngBounds(southWest, northEast);

无论如何,你为什么不检查纬度值?

if (-85.0 <= somePoint.latitude && somePoint.latitude <= 85.0) {
    // ...
}