Comment ajuster bounds for coordinate array avec Google maps sdk pour iOS?

comment ajuster les limites pour le tableau de coordonnées avec Google maps sdk pour iOS? Je dois zoomer sur la carte pour 4 marqueurs visibles.

24
demandé sur Mecid 2013-02-28 15:35:00

3 réponses

Voici ma solution pour ce problème. Construction D'un objet GMSCoordinateBounds par coordonnées multiples.

- (void)focusMapToShowAllMarkers
{       
    CLLocationCoordinate2D myLocation = ((GMSMarker *)_markers.firstObject).position;
    GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:myLocation coordinate:myLocation];

    for (GMSMarker *marker in _markers)
        bounds = [bounds includingCoordinate:marker.position];

    [_mapView animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:15.0f]];
}

réponse mise à jour: Since GMSMapView marques propriété est obsolète, vous devez enregistrer tous les marqueurs dans votre propre tableau.

mise à jour de swift 3 réponse:

    func focusMapToShowAllMarkers() {
        let firstLocation = (markers.first as GMSMarker).position
        var bounds = GMSCoordinateBoundsWithCoordinate(firstLocation, coordinate: firstLocation)

        for marker in markers {
            bounds = bounds.includingCoordinate(marker.position)
        }
        let update = GMSCameraUpdate.fitBounds(bounds, withPadding: CGFloat(15))
        self.mapView.animate(cameraUpdate: update)
  }
63
répondu Lirik 2017-11-07 13:37:01

Swift 3.0 version de la réponse de Lirik:

func focusMapToShowAllMarkers() {
    let myLocation: CLLocationCoordinate2D = self.markers.first!.position
    var bounds: GMSCoordinateBounds = GMSCoordinateBounds(coordinate: myLocation, coordinate: myLocation)

    for marker in self.markers {
        bounds = bounds.includingCoordinate(marker.position)
        self.mapView.animate(with: GMSCameraUpdate.fit(bounds, withPadding: 15.0))
    }
}

Et voici ma façon:

func focusMapToShowMarkers(markers: [GMSMarker]) {

    guard let currentUserLocation = self.locationManager.location?.coordinate else {
        return
    }

    var bounds: GMSCoordinateBounds = GMSCoordinateBounds(coordinate: currentUserLocation,
                                                          coordinate: currentUserLocation)

    _ = markers.map {
        bounds = bounds.includingCoordinate(.position)
        self.mapView.animate(with: GMSCameraUpdate.fit(bounds, withPadding: 15.0))
    }
}

Et vous pouvez appeler ma fonction ci-dessus comme suit:

self.focusMapToShowMarkers(markers: [self.myLocationMarker, currentPokemonMarker])

5
répondu Glenn 2017-02-24 12:48:25

pour le moment, Google a enfin mis en place les GMSCoordinateBounds, vous pouvez l'utiliser avec GMSCameraUpdate.

pour plus de détails, veuillez consulter le référence.

3
répondu Leslie 2016-06-30 14:44:31