2010-11-25 31 views
2

Je suis passé par certaines réponses liées mais ne semble pas obtenir la réponse correcte ou la réponse dont j'ai besoin. Comme nous ouvrons googlemap dans la vue mkmap, je veux ouvrir la carte openstreet dans mkmapview.comment ouvrir OpenStreetmap dans mkmapview? -iphone

S'il existe un lien ou un exemple de code le montrant, veuillez le transmettre.

Merci à l'avance

Répondre

4

MKMapView est conforme aux termes et conditions Google Map il utilise uniquement la carte google. Vous ne pouvez pas intégrer OpenStreetMap comme ça dans MKMapView. Le code Google a une API RouteME qui rend OpenStreetMap dans iphone. RouteMe fournit également une bonne documentation sur la façon d'inclure dans notre projet.

Alors n'hésitez pas à utiliser ça.

1

importer ces cadres:

#import <MapKit/MapKit.h> 

Inclure ce délégué

@interface ViewController() <MKMapViewDelegate> 

Ajouter ce code à votre méthode viewDidLoad pré-existante

(void)viewDidLoad 
{ 
    // Tile system URL template goes here 
    NSString *template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png"; 

    // Associating overlay with URL template 
    MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:template]; 

    // Allowing overlays on MKMapView & disabling Apple map data 
    overlay.canReplaceMapContent = YES; 

    // Adding overlay to MKMapView above Apple lables 
    [self.mapView addOverlay:overlay level:MKOverlayLevelAboveLabels]; 

    // Linking the delegate to allow the next method to be called 
    self.mapView.delegate = self; 
} 

Et cela quelque part dans votre classe qui est délégué de Mapview (très probablement un contrôleur de vue).

(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKTileOverlay class]]) { 
     // Overlay the tile with the new template 
     return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay]; 
    } 
    return nil; 
}