Отсутствует CSS MapBox с использованием React

Я пытаюсь работать с 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;

Отсутствует CSS MapBox с использованием React

РЕШЕНИЕ:

Как я уже сказал, я добавил 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%;
}

В консоли отображаются какие-либо ошибки? Либо javascript, либо 404 для CSS и т. д.

Colin Young 18.06.2018 14:31

Нет, покажи мне только предупреждение, но если прокомментировать или удалить импорт css, мне ничего не покажет. Если я просматриваю html, холст существует, но не отображается

Javier 18.06.2018 14:43

А как насчет вкладки сети? Это показывает, что требуемый CSS загружается правильно? Содержимое соответствует вашим ожиданиям? Есть ли параметр visibility или display в элементе карты html, который препятствует его отображению?

Colin Young 18.06.2018 14:51

Я нашел решение

Javier 19.06.2018 08:05

Можете ли вы добавить свое решение в качестве ответа? Это облегчает задачу другим, кто позже ответит на этот вопрос.

Colin Young 19.06.2018 14:16

Я добавил решение в конце вопроса. Ничего страшного?

Javier 20.06.2018 13:07

Это лучше в качестве ответа, так как это покажет, что вопрос имеет ответ. Это нормально ответить на свой вопрос.

Colin Young 20.06.2018 14:09

хорошо извини я отвечаю на свой вопрос

Javier 20.06.2018 14:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
6
8
6 687
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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' />

У меня была такая же проблема, и это исправило ее.

Другие вопросы по теме