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:
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
4 Réponses :
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 }
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.
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, }
cela a fonctionné pour moi:
<ReactMapGL onViewportChange={nextViewport => this.setState({ viewport: { ...nextViewport, width: "fit" } }) } ... >
viewport: { width: "fit", ... },
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é.