Objective c 将MK-C代码转换为Swift

Objective c 将MK-C代码转换为Swift,objective-c,swift,mkmapview,mkpolygon,Objective C,Swift,Mkmapview,Mkpolygon,我有以下Objective-C方法: - (void)addPolygonToMap { NSInteger numberOfPoints = [self.coordinates count]; if (numberOfPoints > 4) { CLLocationCoordinate2D points[numberOfPoints]; for (NSInteger i = 0; i < numberOfPoints; i+

我有以下Objective-C方法:

- (void)addPolygonToMap {
    NSInteger numberOfPoints = [self.coordinates count];
    
    if (numberOfPoints > 4) {
        CLLocationCoordinate2D points[numberOfPoints];
        for (NSInteger i = 0; i < numberOfPoints; i++) {
            points[i] = [self.coordinates[i] MKCoordinateValue];
        }
        
        self.polygon = [MKPolygon polygonWithCoordinates:points count:numberOfPoints];
        [self.mapView addOverlay: self.polygon];
    }
    
    self.isDrawingPolygon = NO;
    [self.drawPolygonButton setTitle:@"draw" forState:UIControlStateNormal];
    self.canvasView.image = nil;
    [self.canvasView removeFromSuperview];
}
更新:

我刚刚注意到,在我的Objective-C版本中,
点[I].latitude
通过了,但是当我执行以下操作时,我得到了一个奇怪的输出:

println(coordsPointer[i].纬度)

输出:

1.6304166312761E-321

1.64523860065135e-321

1.65511991356818e-321

1.68970450877706e-321

1.7045264781523e-321

1.72922976044436e-321


这可以解释为什么我看不到
覆盖
,但是我使用
不可分配指针
的经验有限。

通过修改
addPolygontmap()
方法进行修复:

func addPolygonToMap() {
    var numberOfPoints: NSInteger = self.coordinates.count

    if (numberOfPoints > 4) {
        var points: [CLLocationCoordinate2D] = []

        for i in 0..<numberOfPoints {
            points.insert(self.coordinates[i].MKCoordinateValue, atIndex: i)
        }

        self.polygon = MKPolygon(coordinates: &points, count: numberOfPoints)
        self.mapView.addOverlay(self.polygon)
    }

    self.isDrawingPolygon = false
    self.drawPolygonButton.setTitle("Draw", forState: .Normal)
    self.canvasView.image = nil
    self.canvasView.removeFromSuperview()
}
func addPolygonToMap(){
变量numberOfPoints:NSInteger=self.coordinates.count
如果(点数>4){
变量点:[CLLocationCoordinate2D]=[]

对于0中的i..我只是快速浏览了您的代码-您似乎正在分配coordsPointer,并且从未填充它。但是您从coords指针设置点…但是您实际上应该从self.coordinates[i]读取值
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
    if (overlay is MKPolygon) {
        var overlayPathView = MKPolygonRenderer(overlay: overlay)
        overlayPathView.fillColor = UIColor.cyanColor().colorWithAlphaComponent(0.2)
        overlayPathView.strokeColor = UIColor.cyanColor().colorWithAlphaComponent(0.2)
        overlayPathView.lineWidth = 5
        
        return overlayPathView
    } else if (overlay is MKPolyline) {
        var overlayPathView = MKPolylineRenderer(overlay: overlay)
        overlayPathView.strokeColor = UIColor.blueColor().colorWithAlphaComponent(0.7)
        overlayPathView.lineWidth = 5
        
        return overlayPathView
    }
    
    return nil
}
func addPolygonToMap() {
    var numberOfPoints: NSInteger = self.coordinates.count

    if (numberOfPoints > 4) {
        var points: [CLLocationCoordinate2D] = []

        for i in 0..<numberOfPoints {
            points.insert(self.coordinates[i].MKCoordinateValue, atIndex: i)
        }

        self.polygon = MKPolygon(coordinates: &points, count: numberOfPoints)
        self.mapView.addOverlay(self.polygon)
    }

    self.isDrawingPolygon = false
    self.drawPolygonButton.setTitle("Draw", forState: .Normal)
    self.canvasView.image = nil
    self.canvasView.removeFromSuperview()
}