GEOSwift 和 MapviewOverlays (Swift)
Posted
技术标签:
【中文标题】GEOSwift 和 MapviewOverlays (Swift)【英文标题】:GEOSwift and MapviewOverlays (Swift) 【发布时间】:2016-05-23 20:14:03 【问题描述】:ViewController.swift
导入 UIKit 导入 MapKit 导入 GEOSwift
类 ViewController: UIViewController, MKMapViewDelegate
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad()
mapView.delegate = self
super.viewDidLoad()
addBoundry()
func addBoundry()
if let geoJSONURL = NSBundle.mainBundle().URLForResource("multipolygon", withExtension: "geojson"),
let geometries = try! Geometry.fromGeoJSON(geoJSONURL),
let geo = geometries[0] as? MultiPolygon
geo
//mapView.addOverlay(geo)
func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
if overlay is MKPolygon
let polygonView = MKPolygonRenderer(overlay: overlay)
polygonView.strokeColor = UIColor.magentaColor()
return polygonView
return MKOverlayRenderer()
Multipolygon.geojson 填充了意大利的几何图形
https://github.com/andreacremaschi/GEOSwift/blob/master/GEOSPlayground.playground/Resources/multipolygon.geojson
我正在尝试使用库,因为我想创建一个带孔的多边形。 但是我找不到解决问题的方法。
当我尝试使用 addoverlay 添加多面体时
会报错
Cannot invoke 'addOverlay' with an argument list of type '(MultiPolygon<Polygon>)'
谁有办法解决我的问题?
【问题讨论】:
【参考方案1】:这里是代码 sn-p。 (swift 3.0)
func addBoundry()
if let geoJSONURL = Bundle.main.url(forResource: "multipolygon", withExtension: "geojson")
do
let geometries = try Geometry.fromGeoJSON(geoJSONURL)
if let geo = geometries?[0] as? MultiPolygon
if let shapesCollection = geo.mapShape() as? MKShapesCollection
let shapes = shapesCollection.shapes
for shape in shapes
if let polygon = shape as? MKPolygon
mapView.add(polygon)
catch
print("Unable to load geojson data")
【讨论】:
以上是关于GEOSwift 和 MapviewOverlays (Swift)的主要内容,如果未能解决你的问题,请参考以下文章
第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等
shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()