iOS MKMapView setCenterCoordinate nicht Ehren die exakte Koordinate
Ich habe den folgenden code, um center auf den aktuellen Standort des Benutzers, wenn die locate-Taste gedrückt wird:
- (void)locate
{
if (self.curLocation) {
[self.googleMapView setCenterCoordinate:self.curLocation.coordinate animated:YES];
NSLog(@"setting center (%f,%f), but got (%f,%f)", self.curLocation.coordinate.latitude, self.curLocation.coordinate.longitude, self.googleMapView.centerCoordinate.latitude, self.googleMapView.centerCoordinate.longitude);
}
}
Den Ausgang des NSLog ist " - Einstellung center (37.785834,-122.406417), bekam aber (37.785826,-122.406406)"
Was bedeutet, dass setCenterCoordinate zog eine Ungefähre koordinieren, statt angewiesen. Dies ist sehr unpraktisch, weil wenn ich die Umsetzung der zoom-Stufe, Zoom out, an der gleichen Stelle, dann Zoomen zurück (da setRegion änderungen der center-Koordinate wie gut) wird sich bewegen, Weg vom alten Standort. Dies ist kontraintuitiv, und die Android-Plattform-API nicht zeigen dieses Fehlverhalten auf.
Könnte mir jemand erklären, warum setCenterCoordinate nicht auf die exakte Koordinate, und wenn möglich, die Art und Weise, um sicherzustellen, Zoom out und in haben das gleiche Zentrum. Danke.
- ändern Sie den Rahmen der MKMapView?
- Ich denke nicht so... ich zog alle anderen mapview-code, und dies ist die einzige Sache-Links.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern Sie Ihre original - "gut" center-Koordinate in einem ivar, dann verwenden Sie, dass jedes mal, wenn Sie zoom in. So sollte es immer gehen zurück zu, wo es begann. Ich nehme an, du bist Zoomen mit einer Taste oder durch aufrufen einer Methode.
Zentrum koordinieren, scheint nicht zuverlässig zu sein. Es wird zuverlässiger, da Sie die Ansicht vergrößern, aber es scheint nie eingestellt werden, um genau das, was Sie Fragen. Auch über den center-Koordinate zurückgegeben, die von
regionThatFits:
nicht geben eine genaue übereinstimmung, die es sollte. Sie können-mapView:regionDidChangeAnimated:
Experimentieren Sie mit dieser:CLLocationCoordinate2D centerCoordinate
und jedes mal, wenn die Karte gezoomt wird, legen Sie es als das Zentrum koordinieren (kombiniert mit dem, was region Sie brauchen, um den zoom der Karte).Den letzten parameter in setCenterCoordinate ist "animiert". Sie sind Einstellung, JA so ist es vielleicht eine Sekunde oder so zu bekommen, an die richtige Stelle. Seit das passiert in einem anderen thread die NSLog-Linie passiert wird, bevor die Karte erreicht die Ziel-Koordinaten. Entweder warten Sie einen Augenblick oder zwei vor dem Lesen der center, oder aktivieren Sie Ihren NSLog-Anweisung über die Taste auf dem Bildschirm, so können Sie sicher sein, dass Sie es tun, nachdem die Karte nicht mehr bewegt.