2016-07-18 6 views
1

Ich habe gerade eine schnelle App, die data+coords von dynamoDB und setzt es auf die ios mapkit. Es gibt zwei Sätze von coords: eine für den aktuellen Benutzerstandort und eine von dynamoDB. Ich möchte diese coords in der Lage sein, innerhalb der Karte zu aktualisieren, aber nicht wollen, dass die tatsächliche mapView Zoom und Bewegung überhaupt (nur der Benutzer kann zoomen und verschieben).iOS: Deaktivieren Sie mapView Update nach dem Hinzufügen von Anmerkungen und aufrufen mapView.showAnnotations()

Ich habe alles über den letzten Teil hinaus erreicht. Wenn die Anmerkungen hinzugefügt werden und wenn mapView.showAnnotations aufgerufen wird, zoomt mapView zoomt immer und verschiebt die Annotationen wann umschließt. Wie deaktiviere ich das?

+0

FINAL EDIT: nach einigem Suchen habe ich mapView.showAnnotations() zu mapView.addAnnotations() geändert. Dadurch wurde das Problem gelöst, indem Ihre Anmerkungen angezeigt, die mapView-Positionierung jedoch nicht aktualisiert wurde. – yks

Antwort

0

Ich vermute, dass Sie Code aus dem Internet verwendet haben (was wir alle tun, keine Sorgen) und dass Ihr Code etwa wie this aussah. Wenn ich recht habe, dann hast du wahrscheinlich irgendwo eine Zeile:

[map setRegion:scaledRegion animated:YES]; 

Diese Zeile ist das Problem. Sie müssen eine Art Boolean verwenden, um es so zu machen, dass es nur einmal vorkommt. So können Sie den booleschen Wert has_mapped = false festlegen, bis Sie Ihre Update-Methode einmal aufgerufen haben, und zwar an diesem Punkt = true. Dann ändern Sie Ihre Linie etwas zu sagen wie:

if (has_mapped) 
    [map setRegion:scaledRegion animated:YES]; 
+0

Ja - Sie haben Recht, ich rufe diese Zeile in ViewDidLoad. Wenn ich es jedoch markiere, scheint es keine Auswirkungen auf das automatische Zoomen zu haben - die Karte fährt fort, auf Annotationen und Norden zu zoomen. Ich habe den Code überprüft und ich glaube nicht, dass es eine weitere Instanz von setRegion gibt. Denken Sie, dass es standardmäßig auf Autozoom eingestellt ist? – yks

+0

Interessant! Wenn er aktualisiert wird, welcher Code wird aufgerufen? Ich würde dort nachsehen und nachsehen, ob etwas mit der Begrenzungsbox zu tun hat. Alternativ könnte der ViewDidLoad aus irgendeinem Grund wieder aufgerufen werden? Sie können NSLog-Anweisungen verwenden, um sie zu verfolgen. Versuchen Sie auch, es auf eine bestimmte hart codierte Region in der Ansicht zu setzen, die geladen wurde, und sehen Sie, ob sich diese bei der Aktualisierung ändert. –

+0

Okay - ich werde denen einen Versuch geben! Vielen Dank! – yks

1

Um zu zeigen, mapView Anmerkungen ohne Aktualisierung mapView Zoom und Einschränkungen, die Verwendung addAnnotations() statt showAnnotations.