Ich habe 2 Annotationen, die in der Kartenansicht angezeigt werden, aber ich kann die Maprect nicht so einstellen, dass sie alle auf dem Bildschirm anzeigen, ohne dass die Benutzer auszoomen müssen.
Ich habe versucht mit showAnnotations
, aber kein Glück. Hat jemand das in Swift und Xcode 6.1.1 geschafft?
Hier ist mein Code:
%Vor%Das habe ich zur Zeit bekommen:
Das habe ich erwartet:
Danke für Ihre Hilfe.
Schließlich habe ich herausgefunden, warum die Pins der Annotationen nicht im sichtbaren Bereich des Bildschirms angezeigt wurden. Ich denke, das MapKit-Framework verhält sich etwas anders als in den vorherigen Versionen. Da ich das automatische Layout verwende, um die Karte für alle Geräte (iPhones, iPads) auf den gesamten Bildschirm zu erweitern, sollten setVisibleMapRect oder mapView.showAnnotations der Map in mapViewDidFinishLoadingMap, nicht in viewDidLoad des View-Controllers
aufgerufen werdenZum Beispiel:
%Vor%Ich hatte das gleiche Problem, als ich
anrief %Vor%Das Verschieben des Aufrufs in viewDidLayoutSubviews () scheint jedoch auch das Problem zu beheben (nicht, dass isInitialLoad in viewDidLoad auf true initialisiert ist).
%Vor%Der Unterschied (ich denke, es ist ein Vorteil) des Aufrufs in viewDidLayoutSubviews besteht darin, dass die Karte noch nicht angezeigt wurde. Ihre anfängliche Anzeige ist also der Bereich, der durch die Anmerkungen definiert wird. Es scheint jedoch, dass es jedes Mal aufgerufen wird, wenn die Karte zoomt, also müssen Sie sicher sein, dass Sie es nur beim ersten Mal aufrufen.
Für mich war das Verwenden der Anzeige von Anmerkungen nach dem Laden der Karte nicht möglich.
%Vor%Neben der Annotation musste ich Polylinien berechnen, um die Annotationen zu verbinden, und das Laden der Karte wurde zu früh ausgelöst.
Stattdessen habe ich mapViewDidFinishRenderingMap ausprobiert und es funktionierte einwandfrei. Siehe Beispiel unten:
%Vor%Sie können das versuchen. Ich habe eine Erweiterung erstellt, um alle Anmerkungen mit etwas Code von hier und dort in swift 2.3 anzuzeigen. Dadurch werden nicht alle Anmerkungen angezeigt, wenn sie selbst bei maximaler Zoomstufe nicht angezeigt werden können.
%Vor%Tags und Links swift mkmapview mkannotation mkmaprect