- 【10/
10追記】 - 本記事で紹介しているGoogleMapsOverlayiOSは,
現在のコードではGoogleマップのタイル画像に直接アクセスする方法をとっているため, Google Mapsの規約に抵触しています。プロダクトには使用せず, あくまで参考の範囲に止めていただくようご注意ください。
(きし様,けい様, コメント欄でのご指摘どうもありがとうございました)
はじめに
米国時間9月19日,
このApple謹製マップによる影響は,
今回は,
GoogleMapsOverlayiOS
概要
Google Maps APIから取得した地図を, iOS 6のマップにオーバーレイするライブラリです。
図1左がiOS 6でMapKitを普通に使用した場合
このように,
使い方
(前提として,
- 1.ソースコードを以下のURLよりダウンロード
- 2.TileOverlayとTileOverlayViewをプロジェクトに追加
TileOverlay.
h, TileOverlay. m, TileOverlayView. h, TileOverlayView. m の4つのファイルをプロジェクトに追加します。 - 3.ヘッダをインポート
-
#import "TileOverlay.
h" #import "TileOverlayView. h" - 4.TileOverlay のプロパティを宣言
-
@property (nonatomic, strong) TileOverlay *overlay;
- 5.TileOverlayをMKMapViewにオーバーレイ
TileOverlayオブジェクトを生成してMKMapViewオブジェクトにオーバーレイします。
self.
overlay = [[TileOverlay alloc] initOverlay]; [self. mapView addOverlay:self. overlay]; MKMapRect visibleRect = [self. mapView mapRectThatFits:self. overlay. boundingMapRect]; visibleRect. size. width /= 2; visibleRect. size. height /= 2; visibleRect. origin. x += visibleRect. size. width / 2; visibleRect. origin. y += visibleRect. size. height / 2; self. mapView. visibleMapRect = visibleRect; - 6. mapView:viewForOverlay: メソッドを実装
MKMapViewDelegate の mapView:viewForOverlay: メソッドで,
TileOverlayViewを生成し, 返します。 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { TileOverlayView *overlayView = [[TileOverlayView alloc] initWithOverlay:overlay]; overlayView.
tileAlpha = 1. 0; return overlayView; } リポジトリには現在地を表示する簡単なデモプロジェクトが入っているので,
まずはそちらで挙動を確認してみることもできます。