mapbox-developer-group / Mapbox-Tech-Q-A

在提问之前请自行查看文档哦,养成好习惯:https://docs.mapbox.com/
32 stars 1 forks source link

在帐户之间转移地图样式的三种方法 #58

Open baoluojian123 opened 4 years ago

baoluojian123 commented 4 years ago

有三种在帐户之间转移地图样式的方法。前两种方法是将Mapbox的地图样式从一个帐户的地图库真实转移到另一个帐户的地图库,不同的是地图样式是公开(Pbulic)还是私有(Private)。第三种方法涉及从你自己的应用程序中的Mapbox地图样式中直接引用地图某元素的公共样式。

方法1:使用共享链接复制公共样式

对于你帐户中保存的地图样式,你可以生成一个特殊链接,该链接允许其他用户将你的地图样式复制到他们的帐户中。

前提是你的地图样式是处于公开状态,可以通过以下方式将其公开:

  1. 访问您的样式页面

  2. 单击您要公开的样式旁边的共享图标image

  3. 单击“公开”按钮。 image

  4. 系统将提示您确认要公开样式。如果确定,请单击“公开确认”按钮。

样式公开后,将在该样式的共享菜单(Allow Copying)中看到一个可复制的链接。 要将样式复制到新帐户,请在登录到目标帐户时将此链接粘贴到导航栏,然后单击“ 复制样式(Copy Style)”按钮。 image image

方法2:下载并重新上传私人风格

在帐户之间转移私人样式,可以在你Mapbox帐户的Studio中对其进行更改,而无需将样式公开。

如果您有权访问要从中进行地图转移的帐户或获得了必要的文件,则可以在帐户之间转移Mapbox的地图产品。

如何将样式从一个帐户转移到另一个帐户取决于您使用的是Mapbox Studio还是Mapbox Studio Classic,以及样式中包含的数据。

使用Mapbox Studio制作的样式

使用Mapbox Studio制作的样式可以以.json格式下载并作为新样式重新上传。要下载样式,请在Mapbox Studio样式编辑器中打开样式,单击“ 共享(Share)”按钮,然后单击“ 下载”选项旁边的链接。您可以下载样式的草稿或正式版本。 image

然后,您可以将.json文件上传到另一个Mapbox帐户:

  1. 解压缩下载的文件夹。
  2. 登录第二个帐户。
  3. 点击“上传样式”按钮。 image
  4. 在解压缩的文件夹中选择style.json文件并上传。

如果您在样式中添加了任何自定义图标或字体,则需要手动将其重新添加。在Mapbox Studio中打开新上传的样式,然后:

  1. 要添加字体,请单击字体,然后单击上传新字体。将字体文件夹的内容从下载的样式拖放到适当的区域。 image
  2. 要添加图标(图像),请单击图像,然后单击上载SVG图像。将图标文件夹的内容从下载的样式拖放到适当的区域。 image

使用Mapbox Studio Classic制作的项目

请注意,不建议使用Mapbox Studio Classic。如果可能,请考虑将样式移至Mapbox Studio。

Mapbox Studio Classic样式(.tm2文件中的CartoCSS)将转换为Mapbox服务器上的代码,因此假定您已经在本地计算机上拥有这些样式。如果它们引用了您的帐户中作为图块集可用的源,则可以将它们重新上传到您的新帐户中。GeoJSON或KML可以作为图块集下载并重新上传到您的新帐户,然后导入到新的Mapbox Studio或Mapbox Studio Classic项目中。

方法3:引用公共样式

通过引用公共样式,可以在自己的应用程序中使用在其他Mapbox帐户上创建的Mapbox地图样式。如果你有多个Mapbox帐户,每个帐户都有自己的自定义样式,字体和图片,则此方法特别有用。

在这种情况下,您具有帐户A的样式,并且希望帐户B在应用程序中使用该样式。

默认情况下,Mapbox地图样式为私人(Private)。导航到“样式”页面,然后打开要共享的样式的菜单。选择“公开”。 image

将样式设置为公开(Public)后,可以通过在“样式”页面内复制样式URL来引用任何应用程序中的样式。

特别说明:任何应用程序都可以使用任何访问令牌来引用公共URL。

这是使用Mapbox GL JS库的外观的快速示例:

mapboxgl.accessToken = '<ACCESS TOKEN FROM ACCOUNT B>';
var map = new mapboxgl.Map({
  container: 'map', // container id
  style: '<PUBLIC STYLE URL FROM ACCOUNT A>', // stylesheet location
  center: [-74.50, 40], // starting position [lng, lat]
  zoom: 9 // starting zoom
});