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()