我已经阅读了某些相关的答案,但似乎没有得到正确的答案或我需要的答案。
当我们在 mkmap 视图中打开 googlemap 时,我想在 mkmapview 中打开 openstreet 地图。
如果有任何链接或示例代码显示它,请传递它。
提前致谢
我已经阅读了某些相关的答案,但似乎没有得到正确的答案或我需要的答案。
当我们在 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;
}