2010-11-25 2 views
2

Я прошел через некоторые связанные ответы, но, похоже, не получил правильного ответа или ответа, который мне нужен.Как открыть OpenStreetmap в mkmapview? -iphone

Как мы открываем googlemap в mkmap view Я хочу открыть openstreet map в mkmapview.

Если есть какая-либо ссылка или код примера, показывающий ее, пожалуйста, передайте ее.

Заранее спасибо

ответ

4

MKMapView соответствует условиям Карты Google и условиям поэтому он использует только Google Map. Вы не можете интегрировать OpenStreetMap так же, как в MKMapView. В коде Google есть API RouteME, который отображает OpenStreetMap в iphone.

RouteMe также предоставляет хорошую документацию, как включить в наш проект. Поэтому не стесняйтесь использовать это.

1

Импорт этих рамочные:

#import <MapKit/MapKit.h> 

Включите этот делегат

@interface ViewController() <MKMapViewDelegate> 

Добавьте этот код на свой ранее существовавшего метода viewDidLoad

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

И это где-то в своем классе, что это делегат MAPview (в скорее всего, контроллер вида).

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