2017-10-06 17 views
0

Le nouveau codeur tente de s'adapter à GoogleMap selon moi.Swift GoogleMaps fitBounds Zoom

J'ai cherché beaucoup d'informations et j'en suis arrivé à cette conclusion, mais cela ne marche pas pour moi.

override func loadview() {

var markerList = [GMSMarker]() 

    // Create a GMSCameraPosition 
    let camera = GMSCameraPosition.camera(withLatitude: 4.390205, longitude: 2.154007, zoom: 8) 
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
    mapView.isMyLocationEnabled = true 
    view = mapView 

    mapView.settings.myLocationButton = true 
    //mapView.setMinZoom(10, maxZoom: 20) 

    //create markers 
    for loc in arrayOfMapStops { 
     let marker = GMSMarker() 
     marker.position = CLLocationCoordinate2D(latitude: loc.lat, longitude: loc.long) 
     marker.title = loc.address 
     marker.snippet = loc.type 
     if loc.type == "Entrega" {marker.icon = GMSMarker.markerImage(with: .green)} 
     else {marker.icon = GMSMarker.markerImage(with: .blue)} 
     marker.map = mapView 
     markerList.append(marker) 
    } 

    //fit map to markers 
    var bounds = GMSCoordinateBounds() 
    for marker in markerList { 
     bounds = bounds.includingCoordinate(marker.position) 
    } 
    let update = GMSCameraUpdate.fit(bounds) 
    mapView.moveCamera(update) 
} 

La carte n'est pas réglé avec le zoom approprié.

image of situation

Tout le monde peut me aider à la question de zoom?

Merci d'avance :)

+0

merci pour suggérer @Nrzonline! –

Répondre

0

J'ai résolu le problème par moi-même. J'utilise DispatchQueue pour définir le bon zoom sur ma carte.

Voici mon code final:

override func loadView() { 

    var markerList = [GMSMarker]() 

    // Create a GMSCameraPosition 
    let camera = GMSCameraPosition.camera(withLatitude: 40.4167 , longitude: -3.70325, zoom: 8) 
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
    mapView.isMyLocationEnabled = true 
    view = mapView 

    mapView.settings.myLocationButton = true 
    //mapView.setMinZoom(10, maxZoom: 20) 

    //create markers 
    for loc in arrayOfMapStops { 
     let marker = GMSMarker() 
     marker.position = CLLocationCoordinate2D(latitude: loc.lat, longitude: loc.long) 
     marker.title = loc.address 
     marker.snippet = loc.type 
     if loc.type == "Entrega" {marker.icon = GMSMarker.markerImage(with: .green)} 
     else {marker.icon = GMSMarker.markerImage(with: .blue)} 
     marker.map = mapView 
     markerList.append(marker) 
    } 

    delay(seconds: 3) {() ->() in 
     //fit map to markers 
     var bounds = GMSCoordinateBounds() 
     for marker in markerList { 
      bounds = bounds.includingCoordinate(marker.position) 
     } 
     let update = GMSCameraUpdate.fit(bounds, withPadding: 100.0) 
     mapView.animate(with: update) 
    } 
} 

func delay(seconds: Double, completion:@escaping()->()) { 
    let when = DispatchTime.now() + seconds 
    DispatchQueue.main.asyncAfter(deadline: when) { 
     completion() 
    } 
} 

:)