Wie kann ich das ändern der frame-position für eine benutzerdefinierte MKAnnotationView?
Ich versuche, eine benutzerdefinierte Anmerkung anzeigen, indem bilden von Unterklassen MKAnnotationView
und überschreiben der drawRect
Methode. Ich möchte die Ansicht gezeichnet werden, der offset aus der annotation der position, so etwas wie MKPinAnnotationView
es tut, so dass der Punkt der pin ist an den angegebenen Koordinaten, statt in der Mitte der pin. Also habe ich die frame-position und-Größe wie unten gezeigt. Jedoch, es sieht nicht wie ich die beeinflussen können die position des Rahmens, sondern nur die Größe. Das Bild landet gezogen wird zentriert über die annotation-position. Irgendwelche Tipps, was ich erreichen will?
MyAnnotationView.h:
@interface MyAnnotationView : MKAnnotationView {
}
MyAnnotationView.m:
- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) {
self.canShowCallout = YES;
self.backgroundColor = [UIColor clearColor];
//Position the frame so that the bottom of it touches the annotation position
self.frame = CGRectMake(0, -16, 32, 32);
}
return self;
}
- (void)drawRect:(CGRect)rect {
[[UIImage imageNamed:@"blue-dot.png"] drawInRect:rect];
}
InformationsquelleAutor andrei | 2010-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eher als Unterklasse MKAnnotationView, haben Sie versucht, mit einer generischen MKAnnotationView und Einstellung der
image
undcenterOffset
Eigenschaften?InformationsquelleAutor Tom
Versuchte ich mit centerOffset und aus irgendeinem Grund war das Bild in der richtigen position, wenn vergrößert, aber Sie vergrößert die Karte aus dem Bild bewegen würde, Weg von, wo es sein soll. Das Update war die Einstellung des Bildes mit dem offset. Hier ist der code, den ich verwendet (können Sie weglassen, die callout-Zeug, wenn Sie nicht über eine Legende), habe ich die pins von hier)
Anpassen centerOffset und calloutOffset wie nötig, um nach Ihrem Bild und den gewünschten Mittelpunkt, und Legende zeigen.
Ich bin mit einer völlig anderen Form für meine Anmerkung anzeigen und dies scheint nicht das problem zu beheben. Auch denke ich nicht, dass diese Lösung nichts zu tun hat mit der Einstellung der annotation ' s position als pro zoom-Stufe.
Ich erlebte dies als gut. Ich musste die CenterOffset zu 0,0 oder was es sonst übersetzt das Bild zusammen mit der Karte bewegen auf irgendeine Funktion der offset x/y-Verhältnis. Nicht sicher, warum.
InformationsquelleAutor BadPirate
Ihre
UIAnnotationView
immer in der gleichen Größenordnung, die Karte ist zoom-level spielt keine Rolle. Das ist, warumcenterOffset
ist nicht gebunden mit der zoom-Stufe.annView.centerOffset
ist, was Sie brauchen. Wenn Sie sehen, dass Ihre pin nicht an der guten Lage (zum Beispiel, die unten in der Mitte zu bewegen ein bisschen, wenn Sie die Vergrößerungsstufe ändern), es ist, weil Sie nicht den richtigencenterOffset
.By the way, wenn Sie möchten, legen Sie den Punkt der Koordinaten in der unteren Mitte des Bildes, die x-Koordinate Ihres
centerOffset
werden sollte, 0.0 f, annotationView center das Bild standardmäßig. So versuchen :Antwort von [MKAnnotation image offset mit benutzerdefinierten pin-Bild
froh zu hören 😉
Schöne copypasta aus dieser Antwort: stackoverflow.com/a/8165645/674009
ja, ich habe es aus, Antwort -, Kranken-link in mein post 🙂
InformationsquelleAutor VICTORGS3
Danke für das Beispiel BadPirate.
Versuchte ich mit UIImageview, aber ich glaube nicht, dass es notwendig ist.
Meiner Klasse sah so aus
Sowie die Umsetzung
InformationsquelleAutor NBALA