iOS google maps sdk GMSMarker positioning

♀尐吖头ヾ 提交于 2019-11-27 07:37:27

问题


I am working with Google maps and I am able to center the map to the GMSMarker by using

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

I am showing a custom callout of size 200*150 and part of it gets hidden when the camera position is changed but I want the callout to be in the center and the map point to be below it. Any ideas how to do this.


回答1:


Have a look at using GMSProjection. To shift the center of the map 100px from the markers location you would do something like:

- (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;
}



回答2:


Swift 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
}


来源:https://stackoverflow.com/questions/16686795/ios-google-maps-sdk-gmsmarker-positioning

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!