使用 mapbox js,如何更改地图的样式?
Using mapbox js, how do I change the style of a map?
我在 header
:
中包含了 mapbox
的 js
和 css
<script src='//api.mapbox.com/mapbox.js/v2.2.4/mapbox.js'></script>
<link href='//api.mapbox.com/mapbox.js/v2.2.4/mapbox.css' rel='stylesheet' />
添加了地图html:
<div id='map'></div>
<style>
body { margin:0; padding:0; }
#map { width:100%; height:471px; }
</style>
然后在js
做了一张图:
L.mapbox.accessToken = 'pk.eyJ1Ijoic21pY2tpZSIsImEiOiJjaWtiM2JkdW0wMDJudnRseTY0NWdrbjFnIn0.WxGYL18BJjWUiNIu-r3MSA';
var map = L.mapbox.map('map', 'mapbox.streets').setView([40, -74.50], 3);
我不知道如何将它的样式更改为我在 mapbox
工作室中的样式。
我在 mapbox studio 中有两个样式 url:
mapbox://styles/smickie/cikb3fhvi0063cekqns0pk1f1
https://api.mapbox.com/styles/v1/smickie/cikb3fhvi0063cekqns0pk1f1.html?title=true&access_token=pk.eyJ1Ijoic21pY2tpZSIsImEiOiJjaWtiM2JkdW0wMDJudnRseTY0NWdrbjFnIn0.WxGYL18BJjWUiNIu-r3MSA#1.4858291953347187/42.16057367191365/1.6334765316350683/0
如何将这些样式应用于我页面中的地图?
这是 api 但我找不到如何在任何地方更改样式:https://www.mapbox.com/mapbox.js/api/v2.2.4/
编辑:由于引入了 Mapbox.js API 的 v2.3.0,因此更新了此答案。它添加了一个 L.mapbox.styleLayer
可以处理使用 Mapbox studio 创建的样式:
L.mapbox.styleLayer('mapbox://styles/mapbox/emerald-v8').addTo(map);
示例:https://www.mapbox.com/mapbox.js/example/v1.0.0/stylelayer/
Mapbox 2.3.0之前的回答:
你用错了API,这些样式是为 Mapbox-GL 使用的 api:
https://www.mapbox.com/mapbox-gl-js/examples/
如果您想像现在一样使用经典 Mapbox API,您需要使用 Mapbox Studio Classic 来创建您自己的样式图块集:
我在 header
:
mapbox
的 js
和 css
<script src='//api.mapbox.com/mapbox.js/v2.2.4/mapbox.js'></script>
<link href='//api.mapbox.com/mapbox.js/v2.2.4/mapbox.css' rel='stylesheet' />
添加了地图html:
<div id='map'></div>
<style>
body { margin:0; padding:0; }
#map { width:100%; height:471px; }
</style>
然后在js
做了一张图:
L.mapbox.accessToken = 'pk.eyJ1Ijoic21pY2tpZSIsImEiOiJjaWtiM2JkdW0wMDJudnRseTY0NWdrbjFnIn0.WxGYL18BJjWUiNIu-r3MSA';
var map = L.mapbox.map('map', 'mapbox.streets').setView([40, -74.50], 3);
我不知道如何将它的样式更改为我在 mapbox
工作室中的样式。
我在 mapbox studio 中有两个样式 url:
mapbox://styles/smickie/cikb3fhvi0063cekqns0pk1f1
https://api.mapbox.com/styles/v1/smickie/cikb3fhvi0063cekqns0pk1f1.html?title=true&access_token=pk.eyJ1Ijoic21pY2tpZSIsImEiOiJjaWtiM2JkdW0wMDJudnRseTY0NWdrbjFnIn0.WxGYL18BJjWUiNIu-r3MSA#1.4858291953347187/42.16057367191365/1.6334765316350683/0
如何将这些样式应用于我页面中的地图?
这是 api 但我找不到如何在任何地方更改样式:https://www.mapbox.com/mapbox.js/api/v2.2.4/
编辑:由于引入了 Mapbox.js API 的 v2.3.0,因此更新了此答案。它添加了一个 L.mapbox.styleLayer
可以处理使用 Mapbox studio 创建的样式:
L.mapbox.styleLayer('mapbox://styles/mapbox/emerald-v8').addTo(map);
示例:https://www.mapbox.com/mapbox.js/example/v1.0.0/stylelayer/
Mapbox 2.3.0之前的回答:
你用错了API,这些样式是为 Mapbox-GL 使用的 api:
https://www.mapbox.com/mapbox-gl-js/examples/
如果您想像现在一样使用经典 Mapbox API,您需要使用 Mapbox Studio Classic 来创建您自己的样式图块集: