2013-05-22 19 views
9

pracuję z mapami Google i jestem w stanie, aby wyśrodkować mapę na GMSMarker za pomocąiOS google maps pozycjonowanie SDK GMSMarker

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

pokazuję niestandardową objaśnienie o rozmiarze 200 * 150 i jego części zostaje ukryty po zmianie położenia kamery, ale chcę, aby objaśnienie znajdowało się w środku, a punkt mapy znajdował się poniżej. Wszelkie pomysły, jak to zrobić.

Odpowiedz

17

Zobacz, jak używać GMSProjection. Aby przesunąć środek mapie 100px od lokalizacji markerów byłoby zrobić coś takiego:

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

próbowałem tego, ale mapa centrów sama ze znacznikiem jest punkt środkowy. – satheeshwaran

+0

Tak właśnie napisałem kod, który napisałem. Musisz zmodyfikować point.x i point.y, aby uzyskać to, co chcesz skompensować. – skarE

+0

Dodałem jak 1000 do X i Y, to samo dzieje się. – 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 
} 
Powiązane problemy