我想对谷歌地图中的某个区域进行缩放
map.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southwest, northeast), padding)
问题是我没有:西南和东北点
我只有地图的中心(LatLnt)和西南和东北之间的距离,
我想知道如何从map_center和距离计算西南和东北点?
欢迎任何帮助
提前谢谢。
答案 0 :(得分:1)
此答案假设您使用的是方形地图。换句话说,起点的角度是45度(也假设地图是平的,这意味着距离很小)。我也假设你不在任何一个极点(是的,我知道呃!)。
好的,记住它是简单的几何形状。由于你知道从西南角到东北角的起点和长度,我使用这个距离的一半,因为这是从起点到这些点的距离。然后我找到了这个"半距离"的x和y分量(与方形图相同)。要做到这一点,我只使用公式latlongOffset等于"半距离的一半"倍于2的平方根。
代码如下(你提供了LatLng startPoint,Double someDistance和int padding):
LatLng southwest, northeast;
Double swLat, neLat, swLng, neLng;
Double halfSomeDistance = someDistance / 2.0;
Double latlongOffset = halfSomeDistance * Math.sqrt(2.0) / 2.0;
swLat = startPoint.latitude - latlongOffset;
swLng = startPoint.longitude - latlongOffset;
neLat = startPoint.latitude + latlongOffset;
neLng = startPoint.longitude + latlongOffset;
southwest = new LatLng(swLat, swLng);
northeast = new LatLng(neLat, neLng);
map.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southwest, northeast), padding));
如果您不使用方形地图,则需要使用直角三角形几何来获取latOffset和lngOffset,因为它们不会相同。
我希望这会有所帮助。