Google Map API for iOSのマーカーのドラッグが使えない。

以前、Google Map API for iOSでマーカーのドラッグ&ドロップができるようになったと書いたが、

Google Mapsでマーカーをドラッグする - H_Yamaguchiのブログ

自分の環境ではうまくいかない現象が発生している。

self.marker = [GMSMarker markerWithPosition:coord];
self.marker.draggable = YES;
self.marker.map = self.map;

こんなコードを書いて、初期表示の状態でマーカーを追加していた。

これを実行して、そのマーカーを長押ししてもドラッグ状態に遷移しない。 一度、マップの別の部分をスワイプまたはピンチしてマップを動かしたあとに長押しするとドラッグ状態となる。

で、どうしたかというと、draggable=YESを使うことは諦めて、以下のコードを使った。

https://github.com/rweindl/google-maps-sdk-ios-drag-drop

手順としては

(1)下記の3ファイルをプロジェクトに突っ込んで

https://github.com/rweindl/google-maps-sdk-ios-drag-drop/tree/master/GoogleMapsDragAndDrop/GoogleMapsDragAndDrop/Classes/DraggableMarkerManager

(2)GMDraggableMarkerManagerを宣言&初期化

#import "GMDraggableMarkerManager.h"

...
@property (strong, nonatomic, readwrite) GMDraggableMarkerManager *draggableMarkerManager;
...

- (void)viewDidLoad {
...
self.draggableMarkerManager = [[GMDraggableMarkerManager alloc] initWithMapView:self.mapViewdelegate:self];
...
}

(3)マーカー描画時にdraggableMarkerManagerにadd

self.marker = [GMSMarker markerWithPosition:coordOPin];
self.marker.map = self.map;    
[self.draggableMarkerManager addDraggableMarker:self.marker ];