Ich versuche, fügen Sie ein benutzerdefiniertes Bild, um eine MKMapView
als MKOverlayView
- ich muss verhindern, dass Benutzer in der Lage, Sie zu Blättern, die außerhalb der Grenzen des overlay. Gibt es bereits Funktionen, um dies zu tun? Oder irgendwelche anderen Vorschläge?
Vielen Dank, Matt
Wenn Sie nur wollen, um das einfrieren der Kartenansicht bei der überlagerung Sie können die Ansicht der Karte die region, um die überlagerung der Grenzen und setzen
scrollEnabled
undzoomEnabled
zuNO
.Aber, die nicht zulassen, der Benutzer scrollen oder Zoomen innerhalb des overlay ' s Grenzen.
Es gibt keine eingebauten Möglichkeiten beschränken die Kartenansicht, um die überlagerung der Grenzen, so hätten Sie es manuell zu tun. Erstens, stellen Sie sicher, dass Ihre
MKOverlay
Objekt implementiert dieboundingMapRect
Eigenschaft. Das kann dann in derregionDidChangeAnimated
delegate-Methode manuell anpassen, die anzeigen, wie gebraucht.Hier ist ein Beispiel, wie dies getan werden könnte.
Der Code unten sollte in der Klasse, die die
MKMapView
.Stellen Sie sicher, dass die map-Ansicht ist zunächst auf eine region festgelegt, wo das overlay sichtbar ist.
Habe ich versucht, dieses mit dem eingebauten
MKCircle
overlay und scheint gut zu funktionieren.EDIT:
Funktioniert es gut 95% der Zeit habe ich jedoch bestätigt durch einige Tests, dass es vielleicht pendeln zwischen zwei Standorten, dann eine unendliche Schleife eingeben. So, ich bearbeitete ihn ein wenig, ich denke, das sollte das problem lösen:
Und nur für den Fall, jemand ist auf der Suche für eine schnelle
MKOverlay
Lösung, hier ist einer:In meinem Fall musste ich mich einschränken, Grenzen zu Fliesen-overlay, das hat eine linke Obere /unteren rechten Koordinaten. Der Code oben funktioniert immer noch gut, aber ersetzt theOverlay.boundingMapRect für MKMapRect paddedBoundingMapRect
}
mit dem folgenden code können Sie erkennen, gebunden Grenzwert für scroll -
HINWEIS: im folgenden code 5000 Anzahl Betrag von eingeschränkter Bereich in Bezug auf Meter. so können Sie verwenden, wie diese >
let restricedAreaMeters = 5000
und schließlich mit overrided Methode auf den FALTENBALG, wenn der Benutzer bekam aus begrenzten Bereich zurück neueste erlaubt koordinieren.
Anna (https://stackoverflow.com/a/4126011/3191130) Lösung im Swift-3.0, ich Hinzugefügt eine Erweiterung:
Setup die Karte verwenden:
MapKit jetzt macht das nativ in iOS-13
Können Sie explizit festlegen, eine Grenze zu beschränken schwenken.
Sehen WWDC 2019-video bei 2378 Sekunden für eine demonstration.
Können Sie auch einschränken, zoom-Stufen
Referenzen