带有 Google 地图 iOS SDK 的 GEOSwift(绘制多边形)

GEOSwift with Google Maps iOS SDK (Draw a polygon)

我正在使用 GEOSwift 库 (https://github.com/GEOSwift/GEOSwift)

我需要帮助:

1 - 如何在 Google 地图上绘制多边形几何数据,代码如下:

let geometry = try! Geometry(wkt: "POLYGON((35 10, 45 45.5, 15 40, 10 20, 35 10))")

2 - 如何从几何 (geometry) 中以字符串或 CLLocationCoordiantes

的形式获取坐标(纬度、经度)

谢谢...

我假设您使用 Google Maps SDK iOS 3.3.0 版和 GEOSwift 5.1.0 版。

您有一个表示为 WKT 的多边形(没有孔),并且您想在 Google 地图上显示它。具体来说,您可能希望以 GMSPolygon

如果你知道你的 WKT 永远是一个多边形,你实际上可以写

let polygon = try! Polygon(wkt: "POLYGON((35 10, 45 45.5, 15 40, 10 20, 35 10))")

如果你不能保证,你可以按照你最初写的去做

let geometry = try! Geometry(wkt: "POLYGON((35 10, 45 45.5, 15 40, 10 20, 35 10))")

然后使用 if case let/guard case let/switch case let:

提取多边形
switch geometry {
case let .polygon(polygon):
    // Do something with polygon
default:
    // handle other types of Geometry or fail here
}

检查 definition of Geometry 显示您可能关心处理的其他情况。

一旦你有了polygon: Polygon,你就可以得到代表它的外观的点:

let points = polygon.exterior.points

Polygon.exterior 给你一个 Polygon.LinearRingPolygon.LinearRing.points 给你一个数组 Point.

既然你有 points,你可以将它们映射到 CLLocationCoordinate2D

的数组中
let coords = points.map { p in CLLocationCoordinate2D(latitude: p.y, longitude: p.x) }

请注意,y 随纬度而 x 随经度。

现在您已经有了 coords,您可以使用其可变子类 GMSMutablePath:

创建一个 GMSPath
let path = GMSMutablePath()
for c in coords {
    path.addCoordinate(c)
}

您可以使用该路径创建 GMSPolygon:

let polygon = GMSPolygon(path: path)

然后你只需要将它添加到你的地图中:

polygon.map = yourMap