谷歌地图api v2 zoom有西南和东北之间的中心和距离

时间:2014-03-26 10:42:52

标签: android zoom google-maps-android-api-2

我想对谷歌地图中的某个区域进行缩放

map.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southwest, northeast), padding)

问题是我没有:西南和东北点

我只有地图的中心(LatLnt)和西南和东北之间的距离,

我想知道如何从map_center和距离计算西南和东北点?

欢迎任何帮助

提前谢谢。

1 个答案:

答案 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,因为它们不会相同。

我希望这会有所帮助。