Google マップを使用するのは初めてで、マップ上でテーピングして、ユーザーがポイントしたい場所を選択できるようにしました。アプリケーションの開始時に、デバイスの場所を指し示します。ユーザーはどのようにデバイスを希望の場所に変更しますか?
3 に答える
まず、ユーザーのタップのポイントを取得します。次に、その CGPoint の座標値を取得し、mapView の中心として設定します。
-(void)handlePan:(UIPanGestureRecognizer *)recognizer
{
// Get tap point
CGPoint tapPoint = [recognizer locationInView:[recognizer superView]];
// Convert CGPoint to CLLocationCoordinate2D
CLLocationCoordinate2D center = [self.mapView.projection coordinateForPoint:tapPoint];
// Set camera of mapView
GMSCameraPosition * camera = [GMSCameraPosition cameraWithLatitude:center.latitude longitude:center.longitude zoom:self.mapView.camera.zoom];
[self.mapView setCamera:camera];
}
または、メソッドを実装しGMSMapViewDelegate
て使用することもできます- mapView:didTapAtCoordinate:
。
マップ ビューの中心点を移動するために、このようなことを行うことで、ビュー ポートを移動できます。
GMSCameraPosition *sydney = [GMSCameraPosition cameraWithLatitude:-33.8683
longitude:151.2086
zoom:6];
[mapView_ setCamera:sydney];
(Google Map SDK では、カメラを使用してマップ全体の一部をターゲットにするように、カメラ位置と呼んでいます)
Checkout https://developers.google.com/maps/documentation/ios/views?hl=ja カメラセクションの移動
ここで、彼がタップしたポイントに移動してタスクを完了するために使用します。次の手順を実行する必要があります。
iVar またはプロパティを定義して、タップ ポイントの位置 (lat/lng) を記録します。
CLLocationCoordinate2D *currentTapLocation;
didTapAtCoordinate デリゲートで、その位置をフェッチする
- (void) mapView:(GMSMapView *) mapView didTapAtCoordinate:(CLLocationCoordinate2D) coordinate{ currentTapLocation = coordinate; }
GMSCamera を作成し、カメラを currentTapLocation に設定します
- (void) mapView:(GMSMapView *) mapView didTapAtCoordinate:(CLLocationCoordinate2D) coordinate{ currentTapLocation = coordinate; GMSCameraPosition *newCameraPosition = [GMSCameraPosition cameraWithLatitude:currentTapLocation.latitude longitude:currentTapLocation.longitude zoom:6]; [mapView_ setCamera:newCameraPosition]; }
オプションの手順: setCamera を直接ではなく新しい位置にアニメーション化する場合は、次のようにします。
[mapView_ animateWithCameraUpdate:[mapView_ setCamera:newCameraPosition];];
それ以外の
[mapView_ setCamera:newCameraPosition];