iOS google maps sdk GMSMarker 定位

Posted

技术标签:

【中文标题】iOS google maps sdk GMSMarker 定位【英文标题】:iOS google maps sdk GMSMarker positioning 【发布时间】: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 的自定义标注,当相机位置发生变化时,它的一部分会被隐藏,但我希望标注位于中心并且地图点位于其下方。任何想法如何做到这一点。

【问题讨论】:

【参考方案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

【讨论】:

以上是关于iOS google maps sdk GMSMarker 定位的主要内容,如果未能解决你的问题,请参考以下文章

iOS 中使用 nativescript-google-maps-sdk 的地图中心错误

如何更新 Google Maps SDK iOS

Google Maps iOS SDK - 搜索地点

带有自定义 URLSessionConfiguration 的 Google Maps iOS SDK

Google Maps iOS SDK 上只有一个标记

适用于 iOS 的 Google Maps SDK - 折线