response-map-gl без ключа API с использованием плиток osm
Является ли это возможным?
Это говорит мне, что это так, но не знаю, почему он определяет и ключ API.
но я не могу заставить его работать react-map-gl
Класс StaticMap. Свойство, которое я вижу из этого класса, просто mapStyle
который будет принимать стандартный путь / имя векторных плиток Mapbox. Это берет объект? Мой код не выдает ошибку и не показывает плитки, которые я запрашиваю.
<DeckGL>
<StaticMap
mapStyle= {{
"version": 7,
"sources": {
"simple-tiles": {
"type": "raster",
"tiles":["http://a.tile.openstreetmap.org/{z}/{x}/{y}.png", "http://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],
"tileSize": 256
},
"power": {
"type": "vector",
"tiles": ["http://gpstrails.info/ex/leaflet/power/osm/{z}/{x}/{y}.json"]
}
},
"layers": [{
"id": "simple-tiles",
"type": "raster",
"source": "simple-tiles",
"minzoom": 0,
"maxzoom": 22
},
{
"id": "road",
"source": "power",
"source-layer": "power",
"type": "line",
"layout": {
"line-join": "round",
"line-cap": "round",
},
"paint": {
"line-color": "red",
"line-width": 4,
}
}]
}}/>
</DeckGL>
Спасибо
0 ответов
Уловка в том стиле, который используется. Стиль - это объект JSON, спецификацию которого вы можете прочитать здесь. Вы можете создавать собственные стили с помощью таких инструментов, как Maputnik, визуальный редактор, который создает файлы, соответствующие стилям, для использования в картах MapboxGL. Создав подходящий стиль, вы можете использовать его в React Map GL.
Вот как будет выглядеть базовый компонент, измененный по сравнению с примером в репозитории Github:
<ReactMapGL
mapStyle="https://s3.amazonaws.com/cdn.brianbancroft.io/assets/osmstyle.json"
{...this.state.viewport}
onViewportChange={viewport => this.setState({ viewport })}
/>
Обратите внимание, что это всего лишь абстрактный пример. Загрузка плитки из OSM здесь слишком медленная, чтобы ее можно было использовать в продакшене. Но он должен показать, как создавать карты, не полагаясь на сервисы Mapbox.