Question

J'utilise ce tutoriel pour intégrer MapKit à ma demande: http://iphonebcit.wordpress.com/iphone -Carte-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];
}

et

- (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;

}

Ainsi, les broches fixeront sur la carte au hasard. Dans ma demande, les coordonnées changeront. Comment puis-je modifier les coordonnées des annotations, de sorte qu'ils seront mis à jour sur la carte?

Quelqu'un sait-il?

Était-ce utile?

La solution

3.x iPhone SDK vous devez supprimer les annotations de broches et le mettre à nouveau. Ce n'est pas très bien si vous avez beaucoup d'annotations d'une carte.

J'essaie de faire mieux donc j'Ony écran / renew mes annotations de broches qui sont à l'écran. Donc, si un utilisateur zoomer à New York, il n'y aura pas d'annotations de broches à San Francisco ou autres que l'utilisateur ne peut pas voir. Ainsi, la performance sera beaucoup mieux.

Peut-être dans l'avenir, ce serait possible. Je l'espère: -)

Autres conseils

Ce tutoriel est seulement pour obtenir une vue de carte pour montrer, rien d'autre. Vous allez avoir besoin d'un plus grand tutoriel. J'ai trouvé celui-ci utile:

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

Probablement ce que vous devez faire est de faire une boucle à travers toutes les annotations sur la carte, les enlever, puis boucle à travers votre réseau de données, en ajoutant les annotations à nouveau. Vous pourriez être plus intelligent à ce sujet et boucle à travers le réseau de données, vérifier s'il y a déjà une broche avec la même latitude / longitude sur la carte, mais cette façon devient plus compliqué.

Depuis que je fais des annotations au moment je viens de faire un test rapide. Vous recevez un avertissement du compilateur, il peut ne pas l'être. Mais cela fonctionne.

Faire une classe MKAnnotation personnalisée de sorte que vous pouvez définir la propriété coordonnée à inscriptibles:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Alors quel que soit le cas ou l'intervalle que vous souhaitez, modifier les coordonnées en utilisant quelque chose comme ceci:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top