iPhone MapKit - update Anmerkungen Koordinaten und Karte

stimmen
2

Ich benutze dieses Tutorial zur Integration MapKit meine Anwendung: http://iphonebcit.wordpress.com/iphone-map-kit-tutorial/

CLLocationCoordinate2D coordinate;
coordinate.latitude = 49.2802;
coordinate.longitude = -123.1182;

NSUInteger count = 1;
for(int i = 0; i < 10; i++) {
    CGFloat latDelta = rand()*.035/RAND_MAX - .02;
    CGFloat longDelta = rand()*.03/RAND_MAX - .015;

    CLLocationCoordinate2D newCoord = {coordinate.latitude+latDelta, coordinate.longitude+longDelta};
    MapDemoAnnotation* annotation = [[MapDemoAnnotation alloc] initWithCoordinate:newCoord andID:count++];
    [mapView addAnnotation:annotation];
    [annotation release];
}

und

- (MKAnnotationView *)mapView:(MKMapView *)mapViewLocal viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapViewLocal dequeueReusableAnnotationViewWithIdentifier:@Pin];
if(pinView == nil) {
    pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@Pin];
    pinView.pinColor = MKPinAnnotationColorPurple;
    pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    pinView.animatesDrop = YES;
    pinView.canShowCallout = YES;
} else {
    pinView.annotation = annotation;
}
return pinView;

}

So werden die Stifte werden zufällig auf der Karte gesetzt. In meiner Anwendung, ändern sich die Koordinaten. Wie kann ich die Koordinaten der Anmerkungen ändern, so dass sie auf der Karte aktualisiert werden?

Weiß jemand?

Veröffentlicht am 09/12/2009 um 14:05
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
2

Auf iPhone SDK 3.x müssen Sie die Pin-Annotationen entfernen und wieder eingestellt. Das ist nicht sehr schön, wenn man viele Anmerkungen eine Ihre Karte hat.

Ich versuche, es besser zu machen, damit ich ony Anzeige / Verlängern Stift Anmerkungen, die auf dem Bildschirm sind. Also, wenn ein Benutzer nach New York vergrößert, wird es nicht Stift Annotationen in San Francisco oder anderes als der Benutzer nicht sehen kann. So wird die Leistung viel besser sein.

Vielleicht in der Zukunft wäre dies möglich. Ich hoffe es :-)

Beantwortet am 08/02/2010 um 13:25
quelle vom benutzer

stimmen
1

Da ich Anmerkungen zur Zeit tun, habe ich nur einen kurzen Test. Sie haben eine Compiler-Warnung erhalten, so dass es möglicherweise nicht unterstützt. Aber es funktioniert.

Erstellen Sie eine benutzerdefinierte MKAnnotation Klasse, so dass Sie die Koordinaten Eigenschaft können sein beschreibbar:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Dann um jedes Ereignis oder Intervall, das Sie wollen, ändern Sie das mit so etwas wie dieser Koordinate:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Beantwortet am 18/05/2010 um 13:01
quelle vom benutzer

stimmen
1

Das Tutorial ist nur für eine Kartenansicht bekommen zu zeigen, sonst nichts. Du wirst einen größeren Tutorial benötigen. Ich fand dieses nützlich:

http://blog.objectgraph.com/index.php/2009/04/02/iphone-sdk-30-playing-with-map-kit/

Wahrscheinlich, was Sie tun müssen, um eine Schleife durch alle Anmerkungen auf der Karte, sie zu entfernen, dann die Schleife durch Ihre Datenarray, das Hinzufügen der Anmerkungen wieder zurück. Sie könnten klüger darüber und Schleife durch den Daten-Array, zu überprüfen, ob es bereits ein Stift mit der gleichen Breite / Länge auf der Karte, aber auf diese Weise wird komplizierter.

Beantwortet am 10/12/2009 um 04:02
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more