iOSアプリへのGoogle Map SDKの組み込みについては以下の記事を参照。
Google Mapを組み込む - [開発] - Google Maps SDK for iOS
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPK70c6BfDaQQUTic7uMXNYeMLDziaHt8wqFudd34igPMoOf2Xv6GpWn-fmFO8on3UO0iYTKLDtHuUR9eok48t8EWMGXXf3cq15PIgVg6rGsBuUq-Vf9phISb2ivs-cJ1qq78LV-hMqcYe/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2013-03-02+23.27.20.png)
デリゲートメソッド一覧
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 件のコメント:
コメントを投稿