2011-05-26 15 views
5

¿Existe un método (o cualquier forma) se puede obtener la "ruta del índice" de la anotación dentro del método:MapView annotation indexPath?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation

Lo que quiero hacer es conseguir algo dentro de una matriz de acuerdo con la anotación. Uno de los métodos que creo que quiero copiar es - tableView:cellForRowAtIndexPath: y uso el "indexPath".

Se ha buscado mucho, pero no se ha encontrado ningún resultado. O tal vez solo soy malo en la búsqueda. Cualquier referencia será muy apreciada.

+0

Si solo quiere una matriz de anotaciones, no puede hacer uso de 'mapView.annotations' que proporciona una matriz de anotaciones. – visakh7

+0

Necesito obtener los datos fuera de la anotación (de un conjunto de datos diferente) así que solo obtener las anotaciones no funcionará. – Angelo

Respuesta

-1

para responder a mi propia pregunta (esto cómo funciona para mí):

he creado una instancia en la anotación personalizada y se transfieren los datos allí, a continuación, en el interior - mapView:viewForAnnotation: (he usado encargo pinView) Me importan y crean una instancia de mi CustomAnnotation y obtuve la información de allí.

[customAnnotation setSomething: data];
- mapView:viewForAnnotation: 
{ 
    pinView = [[[CustomPinView alloc] initWithAnnotation: annotation reuseIdentifier: PinIdentifier] autorelease]; 
}
- initWithAnnotation:reuseIdentifier: 
{ 
  CustomAnnotation *customAnnotation = (CustomAnnotation *)annotation; 

    [customAnnotation something]; 
}

Overkill para mí, pero hace el trabajo.

4
NSUInteger index = [mapView.annotations indexOfObject:annotation]; 

Puesto que la matriz subyacente es un uno mutable, tenga en cuenta que la index puede cambiar. Esta parece ser la información más cercana a indexPath que puede obtener.

+0

Sí, lo es, pero como se indicó, el índice está cambiando y no funcionará (o la mayoría no funcionará). Hay momentos en los que se obtiene una información de un índice diferente. Otra cosa es que si la ubicación del usuario está activada, debe transferir las anotaciones a un NSMutableArray y eliminarlo primero (índice: 0). – Angelo