2014-06-11 8 views
0

최근에지도를 연구하기 시작했고 OpenLayer (Openstreetmap이 표시하는 것으로 생각하는 타일)를 MKMapView에서 구현할 수있는 방법을 알고 싶었습니다. 기본 sdk does not는 내가하고 싶은 것을 충분히 자세히 보여줍니다. 타일을 찾기 위해 서버를 핑 (ping) 할 수는 있지만 그렇게하는 것에 대한 경고가 계속 나타납니다. 그래서 내 두 가지 문제는 1) openlayer에서 타일을 가져 와서 내 mapview에 오버레이하는 방법과 2)이 타일을 미리 가져 와서 내 앱에 저장하는 방법이 있습니까? 나는 단지 작은 면적 (대략 9 평방 마일 상당)을 매핑하려고하고있다. 어떤 제안이라도 환영합니다mapview에서 OpenLayer (OpenStreetMap) 타일을 사용하는 방법

답변

1

당신이 찾고있는 것은 OpenSteetMap에서 타일을 오버레이하는 MKTileOverlay입니다.

NSHipster에 매트 톰슨에 의해이에 대한 몇 가지 예제 코드가있다 :

static NSString * const template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png"; 

MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:template]; 
overlay.canReplaceMapContent = YES; 

[self.mapView addOverlay:overlay 
       level:MKOverlayLevelAboveLabels]; 

각 필요한 타일의 경우, 이것은 URL 템플릿에서 데이터를 다운로드합니다.

자세한 내용은 http://nshipster.com/mktileoverlay-mkmapsnapshotter-mkdirections/ (여기에서 가져옴)을 참조하십시오.

(예를 들어, 일부 타일이 응용 프로그램과 함께 제공됩니다) 자신의 타일 캐시를 관리하려면

, 당신은

- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *tileData, NSError *error))result 

을 하위 클래스와 직접 데이터를 제공합니다. 그러나 모든 확대/축소 수준이 필요한 경우 9 평방 마일의 데이터조차도 매우 클 것이라고 생각합니다. 잠재적으로 하이브리드를 가질 수 있으며 앱에 데이터를 제공하고 더 높은 줌 레벨을 직접 다운로드 할 수 있습니다.

+0

이것은 현재 내가 가지고있는 것이지만 그들의 서버에서 다운로드를 계속하고 싶지 않습니다 (차단되고 싶지 않습니다). 하이브리드도 나쁘지 않을 것입니다. 나는 수동으로 다운로드하고 싶다면 URL의 x와 y가 무엇인지 알아 내려고 애쓰는 데 문제가있었습니다. 특정 확대/축소 영역에서 면적을 계산하거나 시각적으로 보정하고 타일을 다운로드하는 방법이 있습니까? – CoderNinja

+0

매우 크게 정의하십시오. WMTS 타일은 대개 수 킬로바이트 크기이며 9 평방 마일은 매우 작은 면적입니다. –

+0

당신은 아마 이것을 이미 알아 냈을 것입니다,하지만이 페이지는 OSM 타일을 다운로드하는 방법을 알려줍니다 : http://shiki.me/blog/offline-maps-in-ios-using-openstreetmap-and-route-me/ – smacdonald