2009-08-26 8 views

Répondre

1

J'ai utilisé des idées de cet article de blog pour ce faire. Il s'agit essentiellement d'ajouter une vue transparente sur la carte. La carte vous permet ensuite de convertir des emplacements en points sur la vue. Faites-moi savoir si le site ne vous aide pas et je peux essayer de déterrer un exemple de mon code.

http://spitzkoff.com/craig/?p=65

6

La façon dont je lis votre question est que vous voulez programme dessiner le polygone sur la carte. Pour cela, consultez le Apple docs on MapKit.

Vous n'avez pas besoin d'ajouter des vues transparentes sur la carte MapKit (MKMapView). Vous créez un objet superposition, dans ce cas un MKPolygon. (Dans l'exemple suivant, la variable map sera la MKMapView instance appartenant au contrôleur de vue que vous mettez ce code dans):

CLLocationCoordinate2D points[4]; 

points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116); 
points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066); 
points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981); 
points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267); 

MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4]; 
poly.title = @"Colorado"; 

[map addOverlay:poly]; 

Ensuite, si vous voulez personnaliser l'apparence (couleurs, accident vasculaire cérébral, etc.) de la superposition, vous mettre en œuvre le protocole MKMapViewDelegate dans le contrôleur de vue que vous avez propriétaire de l'objet MKMapView et fournir une implémentation de mapView:viewForOverlay:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolygon class]]) 
    { 
     MKPolygonView* aView = [[[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay] autorelease]; 

     aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2]; 
     aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7]; 
     aView.lineWidth = 3; 

     return aView; 
    } 

    return nil; 
} 

Bien sûr, rappelez-vous toujours attribuer réellement la carte délégué de l'instance à votre contrôleur de vue (MKMapViewDelegate), soit dans le générateur d'interface, soit dans le code (par ex. viewDidLoad).

+0

Et, bien sûr, pour les cercles, vous utiliseriez 'MKCircle' au lieu de' MKPolygon' – Nate

Questions connexes