Я пытаюсь работать с MapBox с помощью React. Я создал проект с помощью приложения create-response-app, добавил mapbox-gl ("mapbox-gl": "^ 0.46.0-beta.1"), но у меня проблема с файлом css. Он показывает мне это предупреждение:
This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described inhttps://www.mapbox.com/mapbox-gl-js/api/
Я выполнил все шаги:
1 - Установите пакет npm: npm install --save mapbox-gl
2 - Включите файл CSS в свой HTML-файл: <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.45.0/mapbox-gl.css' rel='stylesheet' />.
Но как я использую реакцию с ES6, я добавил в index.js файл css import 'mapbox-gl/dist/mapbox-gl.css';
Если я импортирую файл css, он мне ничего не показывает, и если я прокомментирую этот импорт, он показывает мне карту без дизайна и показывает мне предупреждение.
Как я могу это решить ??? Спасибо за вашу помощь
Вот мой код:
import React, { Component } from 'react';
import mapboxgl from 'mapbox-gl';
mapboxgl.accessToken = 'my_token';
class MapComponent extends Component {
constructor(props) {
super(props);
this.state = {
lng: 1.2217,
lat: 39.8499,
zoom: 6.48
};
}
componentDidMount() {
const { lng, lat, zoom } = this.state;
var map = new mapboxgl.Map({
container: 'map',
center: [lng, lat],
style: 'mapbox://styles/mapbox/streets-v10',
zoom: zoom
});
map.on('move', () => {
const { lng, lat } = map.getCenter();
this.setState({
lng: lng.toFixed(4),
lat: lat.toFixed(4),
zoom: map.getZoom().toFixed(2)
});
});
}
render() {
const { lng, lat, zoom } = this.state;
return (
<div className = "App">
<div className = "inline-block absolute top left mt12 ml12 bg-darken75 color-white z1 py6 px12 round-full txt-s txt-bold">
<div>{`Longitude: ${lng} Latitude: ${lat} Zoom: ${zoom}`}</div>
</div>
<div id = "map" />
</div>
);
}
}
export default MapComponent;
РЕШЕНИЕ:
Как я уже сказал, я добавил mapbox-gl.css, import 'mapbox-gl/dist/mapbox-gl.css';, но не показывает карту.
В файле css показаны следующие атрибуты css:
<canvas class = "mapboxgl-canvas" tabindex = "0" aria-label = "Map" width = "951" height = "844" style = "position: absolute; width: 951px; height: 844px;"></canvas>
Я изменил свойства холста следующим образом:
.mapboxgl-canvas {
position: fixed !important;
height: 100% !important;
}
РЕШЕНО:
1 - import 'mapbox-gl/dist/mapbox-gl.css';
2 - переопределить класс css с именем .mapboxgl-canvas
.mapboxgl-canvas {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
}
Нет, покажи мне только предупреждение, но если прокомментировать или удалить импорт css, мне ничего не покажет. Если я просматриваю html, холст существует, но не отображается
А как насчет вкладки сети? Это показывает, что требуемый CSS загружается правильно? Содержимое соответствует вашим ожиданиям? Есть ли параметр visibility или display в элементе карты html, который препятствует его отображению?
Я нашел решение
Можете ли вы добавить свое решение в качестве ответа? Это облегчает задачу другим, кто позже ответит на этот вопрос.
Я добавил решение в конце вопроса. Ничего страшного?
Это лучше в качестве ответа, так как это покажет, что вопрос имеет ответ. Это нормально ответить на свой вопрос.
хорошо извини я отвечаю на свой вопрос





1 - импортировать 'mapbox-gl / dist / mapbox-gl.css';
2 - переопределить класс css с именем .mapboxgl-canvas
.mapboxgl-canvas {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
}
1 - Создайте файл randomName.css
2 - Добавьте этот код в свой файл randomName.css
#yourMapDivName {
position:absolute;
top:0;
bottom:0;
width:100%;
}
body {
margin:0;
padding:0;
}
3 - импортируйте './randomName.css' в ваш файл index.js
Предупреждение также отображается при использовании более старой версии таблицы стилей Mapbox как описано здесь:
Adding the stylesheet like this doesn't fix the warning:
<!-- index.html --> <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.42.0/mapbox-gl.css' rel='stylesheet' />And importing in the app.js like this doesn't work either:
// app.js import 'mapbox-gl/dist/mapbox-gl.css';The way I found that fix this problem with the current version of the module is add the updated stylesheet:
<link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.53.0/mapbox-gl.css' rel='stylesheet' />
У меня была такая же проблема, и это исправило ее.
В консоли отображаются какие-либо ошибки? Либо javascript, либо 404 для CSS и т. д.