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

时间:2019-08-31 13:27:31

标签: ios swift google-maps-sdk-ios geoswift

我正在使用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的形式获取坐标(经度和纬度)

谢谢...

1 个答案:

答案 0 :(得分:2)

我假设您使用的是Google Maps SDK for 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.LinearRing,而Polygon.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