更改谷歌地图iOS sdk上的默认位置

时间:2013-06-22 07:12:46

标签: ios sdk google-maps-sdk-ios

这是我第一次使用谷歌地图,我要求用户通过点击地图选择他想要指向的位置。当应用程序启动时,它会指向设备位置,用户将如何将其更改为他想要的位置?

3 个答案:

答案 0 :(得分:1)

首先得到用户点击的点。然后,获取该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];
}

答案 1 :(得分:0)

或者,您可以实施GMSMapViewDelegate并使用- mapView:didTapAtCoordinate:方法。

答案 2 :(得分:0)

您可以通过执行类似此类操作来移动视图端口以移动地图视图的中心点

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 移动相机部分

所以在这里,为了完成你的任务,移动使用到他点击的地步。您需要执行以下步骤:

  1. 定义一个iVar或属性以记录分接点位置(lat / lng):

      

    CLLocationCoordinate2D * currentTapLocation;

  2. 在didTapAtCoordinate委托中,获取该位置

    - (void) mapView:(GMSMapView *) mapView didTapAtCoordinate:(CLLocationCoordinate2D) coordinate{
        currentTapLocation = coordinate;
    }
    
  3. 创建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];
    }
    
  4. 可选步骤:如果您想直接设置新位置的动画而不是setCamera, 你可以这样做:

      

    [mapView_ animateWithCameraUpdate:[mapView_   setCamera:newCameraPosition];];

         

    而不是

         

    [mapView_ setCamera:newCameraPosition];