2013-05-30 10 views
7

GMSMapViewを拡張していくつかのクラスタリング機能を作成しようとしています。ユーザーがマップを動かしてクラスタのレンダリングを無効にして終了すると再び検出する必要があります。GMSMapViewは一度だけ起動されます

私はtouchesbeganとtouchesendedしかしtouchesbeganは一度だけ呼び出されます。 hittestをオーバーライドした後、私はGMSVectorMapViewがGMSMapViewに触れるのを見ることができました。この関数の戻り値を変更すると、マップは移動しません。

このイベントをキャプチャしたり、ユーザーがマップとやりとりしたときに何らかのアクションを与える方法はありますか。

よろしく、 マーロンピナTojal

答えて

10

は、私は完全にあなたが検出する必要が触れたものを理解していないか、なぜ/あなたがそれらを検出する必要がありますか。しかし、私はGMSMapViewの上でtouchesbeganのためにユーザーパンのジェスチャーを検出する同様の問題を抱えていました。

私は自分の「現在地」ボタンを持っていたので、ユーザーは自分の場所の地図をオン/オフに切り替えることができます。マップのパンニング受信を中断することなく、ユーザーがいつマップを「パニング」したのかを知る必要がありました(私はまだマップをパンしたいと思っていました)。

まず、私はマップを作成しました:

// Creates Map centered at current location 
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:theLocationManager.location.coordinate.latitude 
                 Longitude:theLocationManager.location.coordinate.longitude 
                  zoom:15]; 
theMapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
theMapView.myLocationEnabled = YES; 
theMapView.delegate = self; 
theMapView.camera = camera; 
self.view = theMapView; 

それから私はパンジェスチャー認識を作成し、theMapViewのジェスチャー認識機能のプロパティにこれを追加しました。私は、セレクタ方式でselfにターゲットを設定してください行わdidPan:

// Watch for pan 
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self action:@selector(didPan:)]; 
theMapView.gestureRecognizers = @[panRecognizer]; 
最後には、同じメインファイルで、私は反応する didPan:メソッドを実装し

際に、ユーザパン:

- (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer 
{ 
    NSLog(@"DID PAN"); 
    // React here to user's pan 
} 
+0

本当にパーフェクトな答えです。+1 –

1

最新のアップデートGoogleマップにデリゲートメソッドがありますか?

関連する問題