我的swift应用程序上有很多注释。如何才能在当前可见的地图区域上显示注释?

问题描述 投票:0回答:1

我正在尝试制作Uber克隆,其中有很多乘客和司机的注释。我只想加载并显示属于当前显示的地图区域的注释,这样所有注释都不会添加到mapview中,也不会消耗太多内存。

我有两种注释:司机和乘客。我的注释有不同的图像。

以下是我尝试这样做的方法:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
      if let annotation = annotation as? DriverAnnotation {
          guard let dequeuedDriverAnnotation = mapView.dequeueReusableAnnotationView(withIdentifier: "driver") else {
              let driverAnnotation = MKAnnotationView(annotation: annotation, reuseIdentifier: "driver")
                  driverAnnotation.image = UIImage(named: "driverAnnotation")
                  return driverAnnotation
              }
              dequeuedDriverAnnotation.annotation = annotation
              return dequeuedDriverAnnotation
          } else if let annotation = annotation as? PassengerAnnotation {
                guard let dequeuedPassengerAnnotation = mapView.dequeueReusableAnnotationView(withIdentifier: "passenger") else {
                    let passengerAnnotation = MKAnnotationView(annotation: annotation, reuseIdentifier: "passenger")
                    passengerAnnotation.image = UIImage(named: "currentLocationAnnotation")
                    return passengerAnnotation
                }
                dequeuedPassengerAnnotation.annotation = annotation
                return dequeuedPassengerAnnotation
          } 
          return nil
     }
}
swift mkmapview mkannotationview
1个回答
0
投票

如何定义函数来检查注释是否属于当前显示的地图区域,如果超出区域,则尝试返回nil。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
  if !visibleMapRegion(annotation) {
      return nil
  }
  ...

要定义此功能,请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.