2013-05-22 16 views
9

sto lavorando con le mappe di Google e sono in grado di centrare la mappa alla GMSMarker utilizzandoiOS google maps posizionamento sdk GMSMarker

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

sto mostrando una didascalia personalizzata di dimensioni 200 * 150 e parte di esso si nasconde quando la posizione della telecamera viene cambiata, ma voglio che il callout sia al centro e che la mappa punti al di sotto di essa. Qualche idea su come fare questo.

risposta

17

Dai un'occhiata a GMSProjection. Per spostare il centro della mappa 100px dalla posizione marcatori si dovrebbe fare qualcosa di simile:

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

Ho provato questo, ma la mappa si centra con il marcatore di essere il punto medio. – satheeshwaran

+0

Sì, questo è ciò che fa il codice che ho scritto. È necessario modificare point.x e point.y per essere ciò che compenserà il risultato desiderato. – skarE

+0

Ho aggiunto 1000 come x e y, la stessa cosa sta succedendo. – 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 
} 
Problemi correlati