【问题标题】:iOS google maps sdk GMSMarker positioningiOS google maps sdk GMSMarker 定位
【发布时间】:2013-05-17 05:04:22
【问题描述】:

我正在使用 Google 地图,我可以使用 GMSMarker 将地图居中放置

 GMSCameraPosition *camera =
    [[GMSCameraPosition alloc] initWithTarget:marker.position
                                         zoom:MAP_ZOOM_LEVEL
                                      bearing:0
                                 viewingAngle:0];
    [mapView animateToCameraPosition:camera];

我正在显示一个大小为 200*150 的自定义标注,当相机位置发生变化时,它的一部分会被隐藏,但我希望标注位于中心并且地图点位于其下方。任何想法如何做到这一点。

【问题讨论】:

    标签: ios google-maps-sdk-ios


    【解决方案1】:

    看看使用GMSProjection。要将地图的中心从标记位置移动 100 像素,您可以执行以下操作:

    - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
      CGPoint point = [mapView_.projection pointForCoordinate:marker.position];
      point.x = point.x + 100;
      GMSCameraUpdate *camera =
          [GMSCameraUpdate setTarget:[mapView_.projection coordinateForPoint:point]];
      [mapView_ animateWithCameraUpdate:camera];
      return YES;
    }
    

    【讨论】:

    • 我试过了,但地图以标记为中点居中。
    • 是的,我写的代码就是这样做的。您需要将 point.x 和 point.y 修改为您想要的任何偏移量。
    • 我在 x 和 y 上都加了 1000,同样的事情正在发生。
    • 是的,我已经正确设置了它,它也被调用了。
    • 遇到了同样的问题。我正在返回 false 并且此方法结束,请检查您是否返回 true。那么上面的解决方案就可以了!
    【解决方案2】:

    斯威夫特 4、3

    func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
        var point:CGPoint = mapView.projection.point(for: marker.position)
        point.x = point.x + 100
    
        let camera:GMSCameraUpdate = GMSCameraUpdate.setTarget(mapView.projection.coordinate(for: point))
        mapView.animate(with: camera)
    
        return true
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      相关资源
      最近更新 更多