react-map-gl 没有 API key 使用 osm tiles
react-map-gl without API key using osm tiles
可能吗?
This 告诉我它是,但不知道为什么它定义和 API 键。
但我无法让它与 react-map-gl
StaticMap class 一起使用。我可以从 class 中看到 属性 只是 mapStyle
,它将采用标准的 Mapbox 矢量切片 path/name。它需要一个对象吗?我的代码没有给我错误或显示我请求的图块。
<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>
谢谢
编辑:根据正确答案,为了保持原样,这是生活在 S3 上的 json
:
{
"version": 8,
"name": "OSM",
"metadata": {
},
"sources": {
"openmaptiles": {
"type": "vector",
"url": "https://free.tilehosting.com/data/v3.json?key={key}"
},
"osm": {
"type": "raster",
"tiles": [
"http://tile.openstreetmap.org/{z}/{x}/{y}.png"
],
"minzoom": 0,
"maxzoom": 14
},
"91y5159eg": {
"type": "vector",
"url": "http://localhost:3000/tilejson.json"
}
},
"sprite": "https://openmaptiles.github.io/klokantech-basic-gl-style/sprite",
"glyphs": "https://free.tilehosting.com/fonts/{fontstack}/{range}.pbf?key=undefined",
"layers": [
{
"id": "osm",
"type": "raster",
"source": "osm"
}
],
"id": "klokantech-basic"
}
更新: Mapbox changed 他们在 2.0 中的许可,因此接受的答案对于版本 < 2.0 是正确的。如果没有提供 access_token,Mapbox > 2.0 会报错。
诀窍在于所使用的样式。样式是一个 JSON 对象,您可以阅读有关 here. You can generate custom styles using tools such as Maputnik 的更多信息,这是一个生成 style-compliant 文件以用于 MapboxGL 地图的可视化编辑器。生成合适的样式后,您可以在 React Map GL 中使用它。
这是基本组件的样子,与 Github repo 中的示例有所不同:
<ReactMapGL
mapStyle="https://s3.amazonaws.com/cdn.brianbancroft.io/assets/osmstyle.json"
{...this.state.viewport}
onViewportChange={viewport => this.setState({ viewport })}
/>
请注意,这只是一个抽象示例。来自 OSM 的图块加载速度太慢,无法用于生产。但它应该说明如何在不依赖 Mapbox 服务端的情况下制作地图。
可能吗?
This 告诉我它是,但不知道为什么它定义和 API 键。
但我无法让它与 react-map-gl
StaticMap class 一起使用。我可以从 class 中看到 属性 只是 mapStyle
,它将采用标准的 Mapbox 矢量切片 path/name。它需要一个对象吗?我的代码没有给我错误或显示我请求的图块。
<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>
谢谢
编辑:根据正确答案,为了保持原样,这是生活在 S3 上的 json
:
{
"version": 8,
"name": "OSM",
"metadata": {
},
"sources": {
"openmaptiles": {
"type": "vector",
"url": "https://free.tilehosting.com/data/v3.json?key={key}"
},
"osm": {
"type": "raster",
"tiles": [
"http://tile.openstreetmap.org/{z}/{x}/{y}.png"
],
"minzoom": 0,
"maxzoom": 14
},
"91y5159eg": {
"type": "vector",
"url": "http://localhost:3000/tilejson.json"
}
},
"sprite": "https://openmaptiles.github.io/klokantech-basic-gl-style/sprite",
"glyphs": "https://free.tilehosting.com/fonts/{fontstack}/{range}.pbf?key=undefined",
"layers": [
{
"id": "osm",
"type": "raster",
"source": "osm"
}
],
"id": "klokantech-basic"
}
更新: Mapbox changed 他们在 2.0 中的许可,因此接受的答案对于版本 < 2.0 是正确的。如果没有提供 access_token,Mapbox > 2.0 会报错。
诀窍在于所使用的样式。样式是一个 JSON 对象,您可以阅读有关 here. You can generate custom styles using tools such as Maputnik 的更多信息,这是一个生成 style-compliant 文件以用于 MapboxGL 地图的可视化编辑器。生成合适的样式后,您可以在 React Map GL 中使用它。
这是基本组件的样子,与 Github repo 中的示例有所不同:
<ReactMapGL
mapStyle="https://s3.amazonaws.com/cdn.brianbancroft.io/assets/osmstyle.json"
{...this.state.viewport}
onViewportChange={viewport => this.setState({ viewport })}
/>
请注意,这只是一个抽象示例。来自 OSM 的图块加载速度太慢,无法用于生产。但它应该说明如何在不依赖 Mapbox 服务端的情况下制作地图。