iPhone MapKit - aktualizovat anotace poloha a mapa

hlasů
2

Používám tento výukový program pro integraci MapKit ke své žádosti: 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];
}

a

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

}

Takže kolíky se nastaví na mapě náhodně. V mé žádosti, budou souřadnice změní. Jak mohu změnit souřadnic anotací, takže budou aktualizovány na mapě?

Ví někdo?

Položena 09/12/2009 v 14:05
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
2

Na iPhone SDK 3.x musíte odstranit pin anotace a nastavte ji znovu. To není moc hezké, pokud máte mnoho popisů mapě.

Snažím se, aby to lepší, takže jsem ony displej / obnovit svůj PIN poznámky, které jsou na obrazovce. Takže pokud uživatel přiblížit se do New Yorku, tam nebude pin anotace v San Francisku nebo jiná než uživatel nemůže vidět. Takže výkon bude mnohem lepší.

Možná, že v budoucnu by to bylo možné. Doufám :-)

Odpovězeno 08/02/2010 v 13:25
zdroj uživatelem

hlasů
1

Vzhledem k tomu, dělám poznámky v okamžiku, kdy jsem jen udělal rychlý test. Děláte si varování kompilátoru, takže to nemusí být podporovány. Ale funguje to.

Udělejte si vlastní třídu MKAnnotation takže si můžete nastavit souřadný vlastnost bude zapisovat:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Pak na cokoliv událost nebo interval chcete změnit souřadnic pomocí něco takového:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Odpovězeno 18/05/2010 v 13:01
zdroj uživatelem

hlasů
1

Že výukový program je určen pouze pro získání zobrazení mapy ukázat, nic jiného. Budeš potřebovat větší výukový program. Tohle jsem našel jeden užitečný:

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

Pravděpodobně to, co budete muset udělat, je procházet všechny poznámky na mapě, jejich odstranění, pak smyčka prostřednictvím svého datového pole, přidávat poznámky zpět. Ty by mohly být chytřejší o tom a procházet pole dat, kontroluje, zda již existuje pin se stejným délka / šířka na mapě, ale takhle se ještě dále komplikuje.

Odpovězeno 10/12/2009 v 04:02
zdroj uživatelem

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