web-dev-qa-db-fra.com

Réagissez MapView natif: quelle est latitudeDelta longitudeDelta

Dans l'exemple de réagissent natif mapview ils ont latitudeDelta et longitudeDelta Est-ce égal à la hauteur et à la largeur? Et dans quelle unité? Selon leur commentaire de github , il est écrit 

Distance entre le minimum et le maximum de latitude/longitude à afficher.

Mais ça ne m'aide pas. Je veux savoir ce que l'utilisateur voit sur la carte.

6
thatsIT

Je suis aussi venu ici parce que je ne trouvais pas de bonne documentation et que Google n'aidait pas. Ce qui suit est issu de mes propres recherches:

Un seul des latitudeDelta ou longitudeDelta est jamais utilisé pour calculer la taille de la carte. Il prend le plus grand des deux selon la formule suivante et ignore l'autre. Ceci est fait pour éviter d'étirer la carte.

  1. La carte est dimensionnée en fonction de la largeur et de la hauteur spécifiées dans les styles et/ou calculées par react-native.
  2. La carte calcule deux valeurs, longitudeDelta/width et latitudeDelta/height, compare ces 2 valeurs calculées et prend la plus grande des deux.
  3. La carte est agrandie en fonction de la valeur choisie à l'étape 2 et l'autre valeur est ignorée .
    • Si la valeur choisie est longitudeDelta, alors le bord gauche est longitude - longitudeDelta et le bord droit est longitude + longitudeDelta. Le haut et le bas représentent les valeurs nécessaires pour remplir la hauteur sans étirer la carte.
    • Si la valeur choisie est latitudeDelta, alors le bord inférieur est latitude - latitudeDelta et le bord supérieur est latitude + latitudeDelta. Les valeurs de gauche et de droite correspondent aux valeurs nécessaires pour remplir la largeur sans étirer la carte.

Voici quelques exemples:

// this uses latitudeDelta because 0.04/300 > 0.05/600
<MapView
  style={{width: 600, height: 300}}
  region={{
    latitude: 31.776685,
    longitude: 35.234491,
    latitudeDelta: 0.04,
    longitudeDelta: 0.05,
  }}
/>



// this uses longitudeDelta because 0.05/600 > 0/myVar when myVar > 0
<MapView
  style={{width: 600, height: myVar}}
  region={{
    latitude: 40.689220,
    longitude: -74.044502,
    latitudeDelta: 0,
    longitudeDelta: 0.05,
  }}
/>
7
Mike Martin

essayez googler j'ai trouvé réponse en minute 

Quantité de distance est-ouest (mesurée en degrés) à afficher pour la région de la carte. Le nombre de kilomètres parcourus par une plage de longitude varie en fonction de la latitude actuelle. Par exemple, un degré de longitude couvre une distance d’environ 111 kilomètres à l’équateur mais se réduit à 0 kilomètre aux pôles.

il y a aussi un problème dans GitHub https://github.com/react-community/react-native-maps/issues/637

j'ai trouvé cette chose aussi https://en.wikipedia.org/wiki/Latitude#Length_of_a_degree_of_latitude

4
nima_moradi

Vous avez besoin 

"centroid": {
    "latitude": "24.2472",
    "longitude": "89.920914"
},
"boundingBox": {
    "southWest": {
        "latitude": "24.234631",
        "longitude": "89.907127"
    },
    "northEast": {
        "latitude": "24.259769",
        "longitude": "89.934692"
    }
}

ou des données similaires pour calculer correctement latitudeDelta et longitudeDelta.

Vous trouverez ci-dessous un code de démonstration pour réagir/réagir natif.

componentDidMount() {
    const { width, height } = Dimensions.get('window');
    const ASPECT_RATIO = width / height;

    const lat = parseFloat(centroid.latitude);
    const lng = parseFloat(centroid.longitude);
    const northeastLat = parseFloat(boundingBox.northEast.latitude);
    const southwestLat = parseFloat(boundingBox.southWest.latitude);
    const latDelta = northeastLat - southwestLat;
    const lngDelta = latDelta * ASPECT_RATIO;

    this.setState({
      region: {
        latitude: lat,
        longitude: lng,
        latitudeDelta: latDelta,
        longitudeDelta: lngDelta
      }
    })     
}
0
M. Sihan