2
votes

React Map GL: la carte ne prend pas toute la largeur

J'utilise sémantique react ui comme bibliothèque ui et react map gl pour rendre les cartes dans mon application react. Mais les cartes rendues à partir de react-map-gl ne prennent pas toute la largeur de la colonne. Veuillez trouver l'image ci-dessous: entrez la description de l'image ici

La ligne pointillée représente la colonne. Il y a encore assez de largeur pour que la carte s'étire. Mais selon la documentation, nous devons fournir la largeur et la hauteur de la carte en pixels.

Le code du conteneur est comme ci-dessous:

viewPort: {
        width: 800,
        height: 800,
        latitude: 21.1458,
        longitude: 79.0882,
        zoom: 4
    }

Alors que le composant qui contient la carte ressemble à ceci:

import React from 'react';
import ReactMapGL from 'react-map-gl';

const PincodesMap = ({ viewPort, handleViewportChange }) => (
    <ReactMapGL
        {...viewPort}
        mapStyle="mapbox://styles/mapbox/dark-v9"
        mapboxApiAccessToken="key"
        onViewportChange={handleViewportChange}
    />
);

export default PincodesMap;

Le code de la fenêtre d'affichage de la carte est le suivant:

    render() {
    return (
        <Grid style={{ padding: '20px' }}>
            <Grid.Row>
                <Grid.Column mobile={16} computer={12} style={{ border: 'dotted', paddingLeft: 0 }}>
                    <PincodesMap
                        viewPort={this.props.viewPort}
                        handleViewportChange={this.handleViewportChange.bind(this)}
                    />
                </Grid.Column>
                <Grid.Column mobile={16} computer={4} style={{ border: 1 }}>
                    This is test
                </Grid.Column>
            </Grid.Row>
        </Grid>
    );
}

Nous ne pouvons pas fournir la largeur en pourcentages. Comment le faire apparaître en pleine largeur? Aussi, comment redimensionner automatiquement la carte sur mobile?

Merci


3 commentaires

Pouvez-vous créer un plunkr affichant le code? consultez ceci embed.plnkr.co/LJ7K5csN5paJaiUgLlB8


Vous pouvez donner width: '100%' dans la fenêtre.


Merci @MurliPrajapati, cela a fonctionné.


4 Réponses :


0
votes

Vous devriez être en mesure de fournir la largeur sous forme de pourcentage. Assurez-vous simplement que c'est une chaîne.

viewPort: {
    width: "100%",
    height: "100%",
    latitude: 21.1458,
    longitude: 79.0882,
    zoom: 4
}


0 commentaires

1
votes

En utilisant react-map-gl version 5.2.3, la carte ne s'afficherait pas lorsque j'utilisais width: '100%', height: '100%' .

Au lieu d'unités de pourcentage, j'ai pu le faire fonctionner en utilisant des unités "vw" / "vh" comme ceci: width: '100vw', height: '100vh' . C'est le style de syntaxe actuellement affiché dans la docs des exemples du repo react-map-gl .

L'exemple du repo utilise directement les accessoires largeur / hauteur, mais dans le viewPort objet, cela ressemblerait à:

viewPort: {
  width: '100vw',
  height: '100vh',
  latitude: 21.1458,
  longitude: 79.0882,
  zoom: 4
}

J'espère que cela aide quelqu'un.


0 commentaires

1
votes

Pour moi, avec react-map-gl@5.2.3 , je ne pouvais pas spécifier la largeur et la hauteur à 100% . Bien que la spécification de 100vh ait fonctionné, elle a rencontré des problèmes sur les appareils mobiles.

J'ai résolu le problème en spécifiant viewport comme ci-dessous

  viewport: {
    latitude: 0,
    longitude: 0,
    zoom: 1,
    height: window.innerHeight,
    width: window.innerWidth,
  }


0 commentaires

1
votes

cela a fonctionné pour moi:

<ReactMapGL
  onViewportChange={nextViewport =>
    this.setState({ viewport: { ...nextViewport, width: "fit" } })
  }
...
>
viewport: {
  width: "fit",
  ...
},


0 commentaires