2010-11-25 67 views
2

我已經經歷了某些相關的答案,但似乎沒有得到正確的答案或我需要的答案。如何在mkmapview中打開OpenStreetmap? -iphone

當我們在mkmap視圖中打開googlemap時,我想在mkmapview中打開openstreet地圖。

如果有任何鏈接或示例代碼顯示,請將其傳遞。

在此先感謝

回答

4

的MKMapView符合谷歌地圖的條款和條件,因此只使用谷歌地圖。你不能像這樣將OpenStreetMap集成到MKMapView中。 Google代碼有一個API RouteME,它在iphone中呈現OpenStreetMap。

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