2013-05-22 9 views
9

ich mit Google Maps arbeite und ich bin in der Lage, die Karte zum GMSMarker zum Zentrum unter VerwendungiOS Google Maps sdk GMSMarker Positionierung

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

ich eine benutzerdefinierte Callout der Größe 200 * 150 und ein Teil davon bin zeigt wird ausgeblendet, wenn die Kameraposition geändert wird, aber ich möchte, dass das Callout in der Mitte liegt und der Map-Punkt darunter liegt. Irgendwelche Ideen, wie man das macht.

Antwort

17

Schauen Sie sich GMSProjection an. Zum Verschieben der Mitte der Karte 100px vom Marker Ort, den Sie so etwas wie tun würde:

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

Ich habe versucht, diese, aber die Karte zentriert sich mit der Marker zu sein der Mittelpunkt. – satheeshwaran

+0

Ja das ist, was der Code, den ich schrieb, tut. Sie müssen point.x und point.y so ändern, wie Sie möchten. – skarE

+0

Ich fügte 1000 sowohl x als auch y hinzu, das Gleiche passiert. – satheeshwaran

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 
} 
Verwandte Themen