У меня есть 2 аннотации для отображения на карте, но невозможно установить отображение, чтобы показать все их на экране, не требуя от пользователя уменьшения.Не удалось установить отображение, чтобы показать все аннотации
Я пробовал с showAnnotations
, но не повезло. Кто-нибудь смог это сделать в Swift и Xcode 6.1.1?
Вот мой код:
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet var map: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
var mapView = map
// 1
let point1 = CLLocationCoordinate2D(latitude: 38.915565, longitude: -77.093524)
let point2 = CLLocationCoordinate2D(latitude: 38.890693, longitude: -76.933318)
//2
let annotation = MKPointAnnotation()
annotation.setCoordinate(point1)
annotation.title = "point1"
map.addAnnotation(annotation)
let annotation2 = MKPointAnnotation()
annotation2.setCoordinate(point2)
annotation2.title = "point2"
map.addAnnotation(annotation2)
//3
// option1: set maprect to cover all annotations, doesn't work
var points = [annotation, annotation2]
var rect = MKMapRectNull
for p in points {
let k = MKMapPointForCoordinate(p.coordinate)
rect = MKMapRectUnion(rect, MKMapRectMake(k.x, k.y, 0.1, 0.1))
println("result: x = \(rect.origin.x) y = \(rect.origin.y)")
}
map.setVisibleMapRect(rect, animated: true)
// option 2: using showAnnotations, doesn't work
//map.showAnnotations(points, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Это то, что я получил в настоящее время:
Это то, что я ожидал увидеть:
Спасибо за вашу помощь.
Не могли бы вы объяснить, что вы имеете в виду, говоря, что «showAnnotations» не работает »? Что происходит? Для 'setVisibleMapRect' вы можете применить ** вставку ** (см., Например, http://stackoverflow.com/a/22070026/467105). Кроме того, вы внедрили «viewForAnnotation», который показывает пользовательский образ для аннотаций, но на скриншоте, который вы «ожидаете», он показывает красные контакты по умолчанию. Почему вы ожидаете красных контактов по умолчанию? – Anna
Анна, что я имел в виду для «не работает» для showAnnotations - это не отображать все контакты, как на ожидаемом экране. – tala9999
Код с showAnnotes выглядит отлично. Если вы предпочитаете setVisibleMapRect вместо этого, добавьте вставку. _Удалить метод viewForAnnotation полностью при тестировании масштабирования. После того как масштабирование будет исправлено, устраните проблему с помощью viewForAnnotation._ Если не отображаются контакты, убедитесь, что вызывается viewForAnnotation (убедитесь, что установлен делегат карты, убедитесь, что файл изображения существует). – Anna