1

我遇到了一种情况,我应该确定给定坐标列表的中位数并设置 GoogleMap 的相机缩放级别(以便在地图加载时所有坐标都显示在单个视图中,用户不需要缩放地图)。

我按照下面的方法来确定给定坐标的中位数。

Convert lat/lon to Cartesian coordinates for each location.
X = cos(lat) * cos(lon)
Y = cos(lat) * sin(lon)
Z = sin(lat)

Compute average x, y and z coordinates.
x = (x1 + x2 + ... + xn) / n
y = (y1 + y2 + ... + yn) / n
z = (z1 + z2 + ... + zn) / n

Convert average x, y, z coordinate to latitude and longitude.
Lon = atan2(y, x)
Hyp = sqrt(x * x + y * y)
Lat = atan2(z, hyp)

Ref :计算多个经纬度坐标对的中心点

现在我想设置谷歌地图的相机缩放值,以便所有坐标都覆盖在单个视图中。

例如 :

如果确定坐标列表存在于加利福尼亚州和佛罗里达州,则应加载谷歌地图并显示整个美国。

如果确定坐标列表存在于加利福尼亚州和德克萨斯州之间,则在设置 GoogleMap 的缩放值时,应仅显示美国地图的该部分。

我正在 Andriod 应用程序和 iOS 中实现这一点。

让我知道我们怎样才能做到这一点。

4

2 回答 2

2

iOS SDK 具有类似的功能。您可以创建一个GMSCoordinateBounds然后创建一个新相机GMSCameraUpdate:fitBounds并调用animateWithCameraUpdate:mapView 对象,传入新相机。

于 2013-06-11T22:57:06.207 回答
1

在 Android 上,只需LatLngBounds从您的LatLngs 列表中构建并使用GoogleMap.animateCamerawith CameraUpdateFactory.newLatLngBounds

于 2013-06-11T21:50:39.227 回答