如何将标记添加到 Mapbox 图层控件?

How to add markers to Mapbox layer control?

我正在使用调用 MB 数据层的简单 Mapbox 层控件(如下)。 我需要为此添加更多标记层,但不确定如何获取 mapbox ID。我怎样才能做到这一点?

L.mapbox.accessToken = 'pk.eyJ1IjoibWFwc3RlciIsImEiOiI3RmFfME5ZIn0.73sdzUFNqSsGQzjlsnimaA';
var map = L.map('map').setView([38.8922,-77.0348], 14);
var layers = document.getElementById('menu-ui');

addLayer(L.mapbox.tileLayer('examples.map-i87786ca'), 'Base Map', 1);
addLayer(L.mapbox.tileLayer('examples.bike-lanes'), 'Bike Lanes', 2);
addLayer(L.mapbox.tileLayer('examples.bike-locations'), 'Bike Stations', 3);

function addLayer(layer, name, zIndex) {
    layer
        .setZIndex(zIndex)
        .addTo(map);

code is from Mapbox toggling layers template

目前您正在使用他们的示例 ID 和地图。你不应该那样做。如果您已经阅读了您发布的页面底部,它会说:

Use this example by copying its source into your own HTML page and replacing the Map ID with one of your own from your projects.

其中 "your projects" 链接到 https://www.mapbox.com/projects/。当您未登录时,您会看到一个漂亮的对话框,要求您登录或注册。完成后,您将获得自己的 ID,并且可以创建项目。创建项目时,您将获得每个项目的地图 ID。这一切都是不言自明的。

编辑:如果你想插入一个带有特征的单独层,你必须创建一个只有一个标记层的项目。保存并复制 id。您可以使用 L.mapbox.featureLayer 将其包含在另一张地图中:

var mapId = 'examples.map-zr0njcqy'; // use your feature mapid
var features = L.mapbox.featureLayer(mapId); // declare featureLayer

features.on('ready', function () { // Wait untill features are loaded
    addLayer(features); // add it the same your tilelayers
}

您还可以使用它来加载外部 geojson 文件,只需使用 URL 而不是 mapid。

参见示例:https://www.mapbox.com/mapbox.js/example/v1.0.0/features-from-another-map/ 和参考:https://www.mapbox.com/mapbox.js/api/v2.1.5/l-mapbox-featurelayer/