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