2015-02-05 138 views
-1

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

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

此刻的你正在使用他们的榜样ID和地图。你不应该那样做。如果你已经在你发布的页面的底部看到它说:

通过将其源代码复制到你自己的HTML页面中,并用你自己的项目中的一个替换你的Map 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 
} 

您也可以使用此仅通过使用URL代替的azazaz加载外部GeoJSON的文件。

见例如: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/

+0

我用我自己的地图标识。该代码来自模板。我感兴趣的选项添加到这个标记层。 – Bergen88 2015-02-05 21:42:00

+0

好的。我编辑了我的答案。但是在你的问题中,你说的是你不确定如何获得一个mapbox id。你可能会更清楚。这个问题缺乏很多东西:你研究的是什么?你尝试了什么?什么地方出了错?你得到什么错误?请参阅:http://stackoverflow.com/help/how-to-ask – iH8 2015-02-05 22:17:31