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