如何从框架库中使用MapView Xcode8

问题描述:

我创建了一个自定义tile服务并将其添加到mapView,然后它可以正常工作。然后我使用相同的代码,并在Xcode 8中创建了一个带有MapView返回类型的框架库。然后我使用了一个示例测试应用程序并将该库导入到该库中,并调用了库中使用的方法并将其添加到mapView。 所以,当我打电话和方法MapView的是我的问题是显示在库中使用的MapKit地图不是我的自定义地图如何从框架库中使用MapView Xcode8

代码的应用程序中使用

import Foundation 
import MapKit 
public class mapLib: NSObject{ 

    public class func createMap(mapView: MKMapView) ->MKMapView{ 
     let mapView = mapView 
     //custom map URL 
     let template = "http://tile.openstreetmap.org/{z}/{x}/{y}.png" 
     let overlay = MKTileOverlay(urlTemplate: template) 
     overlay.canReplaceMapContent = true 
     mapView.add(overlay, level: .aboveLabels) 
     return mapView; 
    } 
} 

代码

import UIKit 
import MapKit 
import mapLib 
class ViewController: UIViewController { 
    @IBOutlet weak var mapV: MKMapView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let view = mapLib.createMap(mapView: mapV) 
     mapV.addOverlays(view.overlays) 

     //any additional setup after loading the view, typically from a nib. 
    } 

我需要澄清,我要接近的方式将工作或任何其他方法来做到这一点:)

你缺少添加self作为delegate和实施func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer方法,你可以这样做在你的图书馆

像这样

import Foundation 
import MapKit 
public class mapLib: NSObject{ 

    public class func createMap(mapView: MKMapView) ->MKMapView{ 
     let mapView = mapView 
     //custom map URL 
     let template = "http://tile.openstreetmap.org/{z}/{x}/{y}.png" 
     let overlay = MKTileOverlay(urlTemplate: template) 
     overlay.canReplaceMapContent = true 
     mapView.add(overlay, level: .aboveLabels) 
     mapView.delegate = self 
     return mapView; 
    } 
} 

extension mapLib : MKMapViewDelegate{ 

    func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
     if let overlayTile = overlay as? MKTileOverlay{ 
      let overLayRenderer = MKTileOverlayRenderer(tileOverlay: overlayTile) 
      return overLayRenderer 
     } 

     return MKOverlayRenderer(overlay: overlay) 
    } 
} 
+0

现在,应用程式坠毁并说:“0__abort_with_payload” – Saneth

+1

再加入在你的viewController中的委托和实现,并尝试,对我来说很难测试你的设置@Saneth –

+0

func mapView(_ mapview:MKMapView,rendererFor overlay:MKOverlay) - > MKOverlayRenderer {...}。是否有任何其他方式来添加此方法的问题是在 – Saneth