2010-11-25 19 views
2

Ich habe bestimmte verwandte Antworten durchgelaufen, aber scheinen nicht richtige Antwort oder die Antwort zu erhalten, die ich brauche.Wie öffne ich OpenStreetmap in mkmapview? -iphone

Wenn wir googlemap in der mkmap-Ansicht öffnen, möchte ich openstreet map in mkmapview öffnen.

Wenn ein Link oder ein Beispielcode angezeigt wird, geben Sie ihn bitte weiter.

Vielen Dank im Voraus

Antwort

4

MKMapView entspricht Google Map Bedingungen, so dass es nur google map verwendet. Sie können OpenStreetMap einfach nicht in MKMapView integrieren. Google-Code hat eine API RouteME, die OpenStreetMap in iphone rendert.

RouteMe bietet auch eine gute Dokumentation, wie Sie in unser Projekt aufnehmen können. Also zögern Sie nicht, das zu benutzen.

1

Import diese Frameworks:

#import <MapKit/MapKit.h> 

Fügen Sie diese Delegierten

@interface ViewController() <MKMapViewDelegate> 

diesen Code auf Ihre bereits existierenden viewDidLoad Methode

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

Und diese irgendwo in Ihrer Klasse hinzufügen, die mapView Delegierter ist (wahrscheinlich ein View-Controller).

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