13

我正在使用谷歌地图,我可以通过使用将地图居中到 GMSMarker

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

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

4

2 回答 2

18

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

- (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;
}
于 2013-05-23T06:07:40.527 回答
5

斯威夫特 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
}
于 2017-06-08T15:08:28.113 回答