Ich bin mit der Verwendung der Google Maps Javascript-API vertraut. Vor kurzem habe ich angefangen, das MapKit-Framework für ein iPhone-Projekt zu verwenden, aber es fällt mir schwer, das Zoomen und Festlegen einer Region auf der Karte herauszufinden.
In der Google Maps-API habe ich ganzzahlige Zoomstufen wie 8, 9, 10 zusammen mit der einfachen Funktion setZoom () verwendet. Die einzige äquivalente Methode, die ich im MapKit-Framework sehen kann, ist setRegion: animiert. Soweit ich weiß, muss ich die Breiten- und Längengrade "Delta" einer Region festlegen, um die Zoomstufe festzulegen. Aber ich habe wirklich keine Ahnung, was diese Werte darstellen (ich habe die Dokumentation gelesen).
Wenn ich einen MKMapView-Delegaten verwende und die Bereichswerte in regionDidChange-Delegaten verfolge, scheinen die Ergebnisse der Delegatenmethode nicht miteinander zu korrelieren. Es ist in Ordnung, wenn ich verkleinere und sehe, dass die Span-Delta-Werte wie in der Dokumentation angegeben zunehmen. Aber plötzlich ziehe ich die Karte ohne zu zoomen und Delta-Werte werden 0.0.
Kann jemand bitte erklären, was der Bezugspunkt zu dieser Spanne und diesem Delta ist? Oder gibt es einen Algorithmus, um eine ganzzahlige Zoomstufe (wie 9) in diese Deltawerte umzuwandeln?
Als Bonusfrage gibt es eine Möglichkeit, eine minimale bis maximale Zoomstufe für eine MKMapView festzulegen :)
Vielen Dank
quelle
Wenn Sie explizite Zoomstufen verwenden möchten, anstatt ein MKCoordinateSpan zu definieren, habe ich eine Kategorie geschrieben, die die Angabe der Zoomstufe einer MKMapView unterstützt. Den Code finden Sie hier .
quelle
Die Spanne ist in Breiten- und Längengraden angegeben. Es gibt eine Methode zum Erstellen von MKCoordinateRegion-Strukturen, die stattdessen Distanz benötigt. Möglicherweise verwenden Sie MKCoordinateRegionMakeWithDistance, um die Spanne anzugeben. Wenn Sie sie dann in regionDidChange überprüfen, sehen Sie die Lat / Long-Spanne, wie sie in einer MKCoordinateRegion-Struktur gespeichert ist.
Soweit ich weiß, sind die ganzzahligen Zoomstufen bei der Arbeit mit MKMapKit nicht verfügbar oder überhaupt nicht nützlich. Ich persönlich bevorzuge die Verwendung der Spannenzahlen, es ist flexibler.
Sie können den maximalen und minimalen Zoom nicht angeben, und ich kenne keine Möglichkeit, ihn zu hacken. MKMapKit ist derzeit ziemlich schwach. Ich bin ziemlich enttäuscht über den Mangel an Funktionen.
quelle
Ein schneller Vergleich der Zoomstufen für einen Standort mithilfe von maps.google.com durch Überprüfen des Link-Querystrings zeigt, dass sich die Werte für dx und dy span um den Faktor 2 erhöhen:
quelle
Brants Kategorie auf MKMapView funktioniert gut. Es scheint jedoch, dass es nicht aktualisiert wurde, um neuere Geräte mit Retina-Bildschirmen bei der Berechnung von mapSizeInPixels zu unterstützen.
Es kann durch Ersetzen dieser Zeile behoben werden:
Mit dieser Zeile:
quelle