Centrer sur un point GPS et restreindre la région

Bonjour,
J'ai ce code pour marquer un repère sur une carte :

 let annotation = MKPointAnnotation()
    let centerCoordinate = CLLocationCoordinate2D(latitude: vLat, longitude: vLong)
    annotation.coordinate = centerCoordinate
    annotation.title = "Title"
    mapView.addAnnotation(annotation)

    let region = MKCoordinateRegion(center: centerCoordinate, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))

    mapView.setRegion(region, animated: true)

Cependant comment diminuer l'échelle de la carte ? et n'avoir seulement qu'un km autour du point.
Merci.

Mots clés:

Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur

    Reduire les deltas

  • J’avais testé mais en dessous de 1 je ne vois pas de différence ! Et à 1 c’est encore trop grand.
    Il me semble avoir vu qu’on pouvait paramétrer un nombre de mètres, mais je ne retrouve pas le code, merci.

  • Merci, en fait cela fonctionne bien si on paramètre une valeur inférieure à 1, je n'avais pas trop remarqué en mode carte, mais en mode satellite cela se voit mieux.
    Maintenant je souhaiterais que la région soit adaptée en fonction du parcours GPS, comment calculer la plus grande distance à insérer dans MKCoordinateRegion en fonction de toutes mes coordonnées ?

  • Bestialement, en utilisant la fonction union de MKMapRect de manière itérative, après avoir défini un MKMapRect de 1 mètre centré sur chaque point GPS ?

    Au final tu auras un MKMapRect qui englobera ton parcours

    Il y a sûrement d'autres possibilités !

  • LarmeLarme Membre
    août 2018 modifié #7

    Pour la question originelle, c'est qu'un delta de latitude/longitude, ça peut faire beaucoup en mètres...

    C'est même écrit dans la documentation de init(latitudeDelta:longitudeDelta:) :

    Parameters
    latitudeDelta
    The amount of north-to-south distance (measured in degrees) to use for the span. Unlike longitudinal distances, which vary based on the latitude, one degree of latitude is approximately 111 kilometers (69 miles) at all times.
    longitudeDelta
    The amount of east-to-west distance (measured in degrees) to use for the span. The number of kilometers spanned by a longitude range varies based on the current latitude. For example, one degree of longitude spans a distance of approximately 111 kilometers (69 miles) at the equator but shrinks to 0 kilometers at the poles.

    Sinon, pour la deuxième question, tu as un petit bout de code ici.
    Attention de bien lire tous les commentaires.

Connectez-vous ou Inscrivez-vous pour répondre.