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