iPhone MapKit - Aktualizacja adnotacji współrzędne i map

głosy
2

Używam tego samouczka dla integracji MapKit do mojego wniosku: 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];
}

i

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

}

Więc kołki ustawi na mapie losowo. W mojej aplikacji, współrzędne zmieni. Jak mogę zmienić współrzędne adnotacji, więc zostaną one zaktualizowane na mapie?

Czy ktoś wie?

Utwórz 09/12/2009 o 14:05
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
2

Na iPhone SDK 3.x trzeba usunąć adnotacje PIN i ustawić go ponownie. To nie jest bardzo ładny, jeśli masz wiele adnotacji mapie.

Staram się zrobić to lepiej więc ony wyświetlacz / odnowić moje adnotacje pin, które są wyświetlane na ekranie. Więc jeśli użytkownik przybliżyć się do Nowego Jorku, nie będzie adnotacji pin w San Francisco lub inne niż użytkownik nie widać. Więc wydajność będzie znacznie lepiej.

Być może w przyszłości będzie to możliwe. Mam nadzieję :-)

Odpowiedział 08/02/2010 o 13:25
źródło użytkownik

głosy
1

Ponieważ robię adnotacji w chwili Zrobiłem szybki test. Dostaniesz ostrzeżenie kompilatora, więc może nie być obsługiwana. Ale to działa.

Dodać do klasy zwyczaj MKAnnotation więc można ustawić właściwość współrzędnych być zapisu:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Wtedy bez względu na zdarzenie lub przedział chcesz zmienić za pomocą współrzędnych coś takiego:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Odpowiedział 18/05/2010 o 13:01
źródło użytkownik

głosy
1

Że poradnik jest tylko na uzyskanie widoku mapy, aby pokazać, nic innego. Będziesz potrzebować większego samouczek. Znalazłem ten przydatny:

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

Prawdopodobnie co musisz zrobić, to do pętli wszystkich adnotacji na mapie, usuwając je, a następnie pętli macierzy danych, dodawanie adnotacji powrotem. Można być bardziej sprytny o nim i pętli tablicy danych, sprawdzając, czy nie ma już pin z tej samej szerokości / długości na mapie, ale w ten sposób staje się bardziej skomplikowana.

Odpowiedział 10/12/2009 o 04:02
źródło użytkownik

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