我正在使用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是当前初始化的地图)
举个例子,这是我的意思截图:
我能做什么的想法?
答案 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) {
// ...
}