iOSアプリへのGoogle Map SDKの組み込みについては以下の記事を参照。
Google Mapを組み込む - [開発] - Google Maps SDK for iOS
デリゲートメソッド一覧
GMSMapViewのdelegate、「GMSMapViewDelegate」で利用できるのは以下のメソッドだ。メソッド | 内容 |
---|---|
- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position; | ・地図の表示領域(カメラ)が変更された際に通知される。 ・アニメーション中は途中の表示領域が通知されたない場合があるが、最終的な位置で通知される。 |
- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate; | ・地図上の特定座標をタップした際に通知される。 ・マーカーをタップした際には通知されない。 |
- (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate; | ・地図上の特定の座標を長押しした際に通知される。 |
- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(id |
・マーカーがタップされた際に通知される。 ・NOを返すと通常の動作であるマーカーウィンドウを表示する。 ・YESを返すとマーカーウィンドウを表示しない。 |
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(id |
・マーカーのウィンドウをタップした際に通知される。 |
- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(id |
・マーカーがタップされて、ウィンドウが表示されるタイミングで通知される。 ・独自のウィンドウを返すことができる。 |
実装方法
ヘッダーへGoogle Mapsをインポートする。#import <GoogleMaps/GoogleMaps.h> #import <UIKit/UIKit.h> @interface ViewController : UIViewController<GMSMapViewDelegate> @end
ViewControllerをdelegateへ指定する。
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.delegate = self;
デリゲートメソッドを定義する
#pragma mark - GMSMapViewDelegate /** * 地図上の特定座標をタップした際に通知される。 * マーカーをタップした際には通知されない。 */ - (void)mapView:(GMSMapView *)mapVie didTapAtCoordinate:(CLLocationCoordinate2D)coordinate { NSLog(@"didTapAtCoordinate %f,%f", coordinate.latitude, coordinate.longitude); } /** * 地図の表示領域(カメラ)が変更された際に通知される。 * アニメーション中は途中の表示領域が通知されたない場合があるが、最終的な位置で通知される。 */ - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position { NSLog(@"didChangeCameraPosition %f,%f", position.target.latitude, position.target.longitude); } /** * 地図上の特定の座標を長押しした際に通知される。 */ - (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate { NSLog(@"didLongPressAtCoordinate %f,%f", coordinate.latitude, coordinate.longitude); } /** * マーカーがタップされた際に通知される。 * NOを返すと通常の動作であるマーカーウィンドウを表示する。 * YESを返すとマーカーウィンドウを表示しない。 */ - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(id)marker { NSLog(@"didTapMarker title:%@, snippet:%@", [marker title], [marker snippet]); return NO; } /** * マーカーのウィンドウをタップした際に通知される。 */ - (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(id )marker { NSLog(@"didTapInfoWindowOfMarker title:%@, snippet:%@", [marker title], [marker snippet]); } /** * マーカーがタップされて、ウィンドウが表示されるタイミングで通知される。 * 独自のウィンドウを返すことができる。 */ - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(id )marker { UIView *mWindow = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; mWindow.backgroundColor = [UIColor redColor]; return mWindow; }
マーカーウィンドウを独自のウィンドウにする場合のサイズの上限は500。
独自のマーカーウィンドウを表示すると以下のようになる。
デフォルトのウィンドウ |
カスタムウィンドウ(サイズ:100) |
カスタムウィンドウ(サイズ:500) |
0 件のコメント:
コメントを投稿