Invertiertes Kreis-Overlay zur Kartenansicht hinzufügen

8

(Verwenden von iOS 5 und Xcode 4.2.)

Ich habe die Anweisungen hier befolgt: Ссылка und verwendete die MKCircle und MKCircleView Klassen, um ein Kreis-Overlay auf meinem MKMapView .

Aber was ich eigentlich will, ist eine umgekehrte Kreisüberlagerung, wie die linke Karte in der Skizze unten (momentan habe ich eine Kreisüberlagerung wie die rechts):

Für den invertierten Kreis sollte die Überlagerung die gesamte Karte abdecken - abgesehen vom sichtbaren Kreis.

Gibt es einen einfachen Weg, dies mit den MKCircle / MKCircleView-Klassen zu erreichen? Oder muss ich tiefer gehen und ein benutzerdefiniertes Overlay-Objekt / Ansicht definieren?

Danke für Ihre Hilfe:)

    
Jon Cox 29.01.2012, 00:14
quelle

3 Antworten

5

Der beste Weg, dies zu tun, wäre die Unterklasse MKMapView und überschreiben Sie den Superaufruf drawRect method, dann übermalen Sie die Karte mit der gewünschten Farbe. Dann sollte drawRect bei jeder Bewegung des Benutzers entsprechend reagieren.

    
Amit Shah 31.01.2012, 10:22
quelle
6

Ich hatte die gleiche Aufgabe und hier ist, wie ich es löse:

HINWEIS: Dieser Code funktioniert nur ab iOS7

Fügen Sie der Karte irgendwo in Ihrem View-Controller ein Overlay hinzu:

%Vor%

In den MKMapViewDelegate-Methoden schreiben Sie als nächstes:

%Vor%

Das MyMapOverlay selbst sollte etwas wie folgt sein:

%Vor%

Und der MyMapOverlayRenderer:

%Vor%

Als Ergebnis erhalten Sie genau dieselbe Ansicht wie auf dem linken Bild, das in der Frage gepostet wurde.

    
Valerii Lider 25.06.2015 12:15
quelle
1

Hier eine schnelle Version. Danke Valerii.

Ссылка

    
Dario Pellegrini 12.01.2017 16:29
quelle

Tags und Links