我已經經歷了某些相關的答案,但似乎沒有得到正確的答案或我需要的答案。如何在mkmapview中打開OpenStreetmap? -iphone
當我們在mkmap視圖中打開googlemap時,我想在mkmapview中打開openstreet地圖。
如果有任何鏈接或示例代碼顯示,請將其傳遞。
在此先感謝
我已經經歷了某些相關的答案,但似乎沒有得到正確的答案或我需要的答案。如何在mkmapview中打開OpenStreetmap? -iphone
當我們在mkmap視圖中打開googlemap時,我想在mkmapview中打開openstreet地圖。
如果有任何鏈接或示例代碼顯示,請將其傳遞。
在此先感謝
的MKMapView符合谷歌地圖的條款和條件,因此只使用谷歌地圖。你不能像這樣將OpenStreetMap集成到MKMapView中。 Google代碼有一個API RouteME,它在iphone中呈現OpenStreetMap。
RouteMe還爲我們的項目提供了一個很好的文檔。所以請隨時使用。
導入這些框架:
#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;
}