Swift MapKit - 创建一个多边形
Posted
技术标签:
【中文标题】Swift MapKit - 创建一个多边形【英文标题】:Swift MapKit - create a polygon 【发布时间】:2017-07-11 15:33:00 【问题描述】:我正在尝试在我的地图上创建一个多边形来显示边界。但是当我运行我的应用程序时,什么都没有出现。我可以看到地图但看不到多边形我的错误是什么?谢谢。
import UIKit
import MapKit
import CoreLocation
class MapScreen : UIViewController
@IBOutlet var mapView: MKMapView!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
mapView.delegate = self as! MKMapViewDelegate
// center the location on the screen
var location = CLLocationCoordinate2DMake(41.308792, -72.928641)
var span = MKCoordinateSpanMake(0.01, 0.01)
var region = MKCoordinateRegionMake(location, span)
mapView.setRegion(region, animated: true)
//calling the method
addBoundry()
func addBoundry() //creation of a polygon
var points = [CLLocationCoordinate2DMake(41.311674, -72.925506),
CLLocationCoordinate2DMake(41.307308, -72.928694),
CLLocationCoordinate2DMake(41.307108, -72.928324),
CLLocationCoordinate2DMake(41.307892, -72.930285),
CLLocationCoordinate2DMake(41.307892, -72.931223),
CLLocationCoordinate2DMake(41.307227, -72.932494),
CLLocationCoordinate2DMake(41.308452, -72.931663),
CLLocationCoordinate2DMake(41.308730, -72.932773),
CLLocationCoordinate2DMake(41.308496, -72.931614),
CLLocationCoordinate2DMake(41.308496, -72.931614),
CLLocationCoordinate2DMake(41.311288, -72.931630),
CLLocationCoordinate2DMake(41.311659, -72.930945),
CLLocationCoordinate2DMake(41.312893, -72.932153),
CLLocationCoordinate2DMake(41.313433, -72.930542),
CLLocationCoordinate2DMake(41.313324, -72.929963),
CLLocationCoordinate2DMake(41.312758, -72.929027),
CLLocationCoordinate2DMake(41.312373, -72.927167),
CLLocationCoordinate2DMake(41.311674, -72.925506)]
let polygon = MKPolygon(coordinates: &points, count: points.count)
mapView.add(polygon)
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer!
if overlay is MKPolygon
let polygonView = MKPolygonRenderer(overlay: overlay)
polygonView.fillColor = UIColor(red: 0, green: 0.847, blue: 1, alpha: 0.25)
return polygonView
return nil
【问题讨论】:
您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题。 【参考方案1】:您对mapView(_:rendererFor:)
的签名不正确。在 Swift 3 中,它将是:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
...
如果您正式声明遵守MKMapViewDelegate
之类的协议,它通常会警告您这些事情。例如,最佳实践是在类扩展中而不是在类定义本身中这样做:
extension MapScreen: MKMapViewDelegate
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
...
顺便说一句,如果你这样做,你不仅会收到关于协议一致性的警告,而且你在设置delegate
时也不需要强制转换它:
mapView.delegate = self
【讨论】:
这对我有用 .. 但是我们可以进一步改进地图缩放以适应多边形的大小吗? 对,但我需要手动放大到那个多边形,在我的场景中,我有不同形状和大小的多边形(比如甚至可以覆盖整个城市或某些小地方的区域)需要在地图上显示。那么有没有一种方法可以让我不管形状和大小都自动居中调整多边形?我还尝试根据较小的区域为缩放部分设置静态参数,但这对较大的多边形没有帮助,反之亦然。尝试“setVisibleMapRect”也没有运气。我昨天在这里发布了这个问题***.com/q/58707909/5255016以上是关于Swift MapKit - 创建一个多边形的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS MapKit 中,如何在地图旋转时为注释设置动画?