как открыть OpenStreetmap в mkmapview? -Iphone - PullRequest
2 голосов
/ 25 ноября 2010

Я прошел через некоторые связанные ответы, но, похоже, не получил правильный ответ или ответ, который мне нужен.

Когда мы открываем googlemap в mkmap, я хочу открыть openstreet map в mkmapview.

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

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

Ответы [ 2 ]

4 голосов
/ 25 ноября 2010

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

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

1 голос
/ 26 июля 2014

Импорт этих фреймворков:

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