ios - 在特定的缩放 iOS Swift 4 上更改 MKMapView 的 Pin 图像

标签 ios swift mkmapview swift4 mkannotationview

我当前的 MKMapView 是:

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

enter image description here

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

当用户在 iOS Swift 4 中放大/缩小 MKMapView 时,我只想更改 Pin Image。 提前致谢! 快乐编码!

最佳答案

第 1 步。首先,您需要获取 map 上显示的图钉/注释的信息。

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 步。您将有委托(delegate)方法调用放大/缩小 regionDidChangeAnimated。只需调用上述函数即可。并更新您的 pin。

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
}

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

关于ios - 在特定的缩放 iOS Swift 4 上更改 MKMapView 的 Pin 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49549719/

相关文章:

ios - 模拟器 clang : error: no such file or directory: '__entitlements' 上的 Xcode 构建错误

ios - 读取文件内容不使用 FileManager

ios - 如何将一个数组添加到另一个数组

ios - CoreBluetooth 和外部附件在 iOS10 中不起作用

ios - UIView 的空中打印生成白页

ios - 如何更新本地 JSON 文件 Swift ios 13

Swift,标签在回调函数中不刷新

ios - 将 MKMapView 发送回 iOS

iPhone - 删除 map 的图钉注释,但不是我的

ios - 点击时自定义标注在 MKMapView 中被取消