这是我第一次使用谷歌地图,我要求让用户通过点击地图来选择他想要指向的位置。当应用程序启动时,它将指向设备位置用户如何将其更改为他想要的位置?
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 将其称为相机位置,就像您使用相机定位整个地图的一部分一样)
结帐https://developers.google.com/maps/documentation/ios/views?hl=en 移动相机部分
所以在这里,为了完成你的任务,使用移动到他点击的点。您需要执行以下步骤:
定义 iVar 或属性以记录分接点位置(纬度/经度):
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];