Необходимо преобладать отвращением к использованию 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 является, в конце концов, простым текстом, свободно введенным, интерпретируемый язык. Преимущества "частных" переменных в этой среде шатки в лучшем случае
я говорю просто быть явным и очевидным о том, как к Вашему объекту нужно получить доступ, и нарушители отклонятся от этого в своем собственном риске.
Можно выбрать, какие формы Вы хотите показать наряду с Аннотациями.
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)
}
}
}