在特定缩放时更改 MKMapView 的 Pin 图像 iOS Swift 4

Change Pin Image of MKMapView on specific zoom In-Out iOS Swift 4

我当前的 MKMapView 是:

但是当我放大时,我想将 Pin Image 更改为:

再次缩小更改为默认的紫色圆圈。

我只是想在 iOS Swift 中用户缩放 In/Out MKMapView 时更改 Pin 图片 4. 提前致谢! 编码愉快!

第 1 步。首先,您需要获取地图上 pin/annotation 显示的信息。

Objective c

-(void)getAnotationsInVisibleMapRectangle
{
    NSSet *annotationSet = [myMapView annotationsInMapRect:myMapView.annotationVisibleRect];
    NSArray *annotationArray = [annotationSet allObjects]; 
}

Swift

extension MKMapView {
    func visibleAnnotations() -> [MKAnnotation] {
        return self.annotationsInMapRect(self.visibleMapRect).map { obj -> MKAnnotation in return obj as! MKAnnotation }
    }
}

第 2 步。您将让委托方法调用缩放 in/out regionDidChangeAnimated。只需调用上述函数即可。并更新您的密码。

func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
            print("call on zoom and zoom out ")
            let aryData = mapView.visibleAnnotations()
            print(aryData[0].coordinate)
      //remove pin from this coordinate
       //And add new pin as you want
}

在这里你可以找到别针。并根据需要删除旧引脚并添加新引脚。