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

时间:2015-02-05 20:52:17

标签: javascript mapbox

我使用一个简单的Mapbox图层控件来调用MB数据层(下面)。 我需要为此添加一些标记图层,但不确定如何获取地图框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

1 个答案:

答案 0 :(得分:1)

目前您正在使用他们的示例ID和地图。你不应该这样做。如果您在页面底部阅读,则说明:

  

使用此示例,将其源代码复制到您自己的HTML页面,并将您的项目中的地图ID替换为您的项目。

“您的项目”与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/