Масштабирование MKMapView для соответствия меткам аннотаций?

Необходимо преобладать отвращением к использованию this указатель на членские переменные доступа.

Присваивают членские переменные в конструкторе, и можно получить доступ к ним с методами прототипа:

function Cat(){
    this.legs = 4;
    this.temperament = 'Apathetic';
    this.sound = 'Meow';
}

Cat.prototype.speak = function(){alert(this.sound)}

var cat = new Cat();
cat.speak();

Да те атрибуты объектов общедоступны, но, как Guido сказал бы, мы - все взрослые здесь. JavaScript является, в конце концов, простым текстом, свободно введенным, интерпретируемый язык. Преимущества "частных" переменных в этой среде шатки в лучшем случае

я говорю просто быть явным и очевидным о том, как к Вашему объекту нужно получить доступ, и нарушители отклонятся от этого в своем собственном риске.

190
задан TheNeil 13 May 2019 в 09:42
поделиться

1 ответ

Можно выбрать, какие формы Вы хотите показать наряду с Аннотациями.

extension MKMapView {
  func setVisibleMapRectToFitAllAnnotations(animated: Bool = true,
                                            shouldIncludeUserAccuracyRange: Bool = true,
                                            shouldIncludeOverlays: Bool = true,
                                            edgePadding: UIEdgeInsets = UIEdgeInsets(top: 35, left: 35, bottom: 35, right: 35)) {
    var mapOverlays = overlays

    if shouldIncludeUserAccuracyRange, let userLocation = userLocation.location {
      let userAccuracyRangeCircle = MKCircle(center: userLocation.coordinate, radius: userLocation.horizontalAccuracy)
      mapOverlays.append(MKOverlayRenderer(overlay: userAccuracyRangeCircle).overlay)
    }

    if shouldIncludeOverlays {
      let annotations = self.annotations.filter { !([110] is MKUserLocation) }
      annotations.forEach { annotation in
        let cirlce = MKCircle(center: annotation.coordinate, radius: 1)
        mapOverlays.append(cirlce)
      }
    }

    let zoomRect = MKMapRect(bounding: mapOverlays)
    setVisibleMapRect(zoomRect, edgePadding: edgePadding, animated: animated)
  }
}

extension MKMapRect {
  init(bounding overlays: [MKOverlay]) {
    self = .null
    overlays.forEach { overlay in
      let rect: MKMapRect = overlay.boundingMapRect
      self = self.union(rect)
    }
  }
}
1
ответ дан 23 November 2019 в 05:35
поделиться