2014-02-20 11 views
0

我有一位使用MapBox.js(v1.6.0)的學生顯示他們在TileMill中製作的某些圖塊。這些圖塊使用TileMill提供的工具提示功能(documentation)添加一些交互功能。我的學生還使用MapBox Streets圖層來提供道路等的詳細視圖。問題是,當我在地圖中同時使用這兩個圖層時,來自圖塊的交互不起作用。當與MapBox.js獨立添加時,TileMill交互式圖層不起作用

這裏是不起作用的代碼:

var map = L.mapbox.map("map"); 

var tilesOSM = L.mapbox.tileLayer("username.id1"); 
var tilesTileMill = L.mapbox.tileLayer("username.id2"); 

map 
    .addLayer(tilesOSM) 
    .addLayer(tilesTileMill) 
    .setView(L.latLng(61, -160.5), 4) 
    .setMaxBounds(L.latLngBounds(L.latLng(50,-180), L.latLng(72,-129))); 

我們已經嘗試過這種代碼的多次迭代,但是我們可以讓它開始工作的唯一方法是通過使用L.mapbox.map( 3)方法,然後使用L.map.addLayer()函數的_ insertAtTheBottom_參數。

var map = L.mapbox.map("map", "username.id2", {}); 

map 
    .addLayer(L.mapbox.tileLayer("username.id1"), true) 
    .setView(L.latLng(61, -160.5), 4) 
    .setMaxBounds(L.latLngBounds(L.latLng(50,-180), L.latLng(72,-129))); 

我的問題是三倍。

  1. 這兩個實現有什麼區別?
  2. 爲什麼使用L.mapbox.tileLayer()創建的tileLayer與使用L.mapbox.map(3)創建並自動添加的tileLayer不同?
  3. 是否有計劃在API的未來更改中解決此不連續問題,或是否會支持在TileMill 2中刪除交互式切片?

回答

1

這兩個實現有什麼區別?

如果您檢出what L.mapbox.map does internally,它將爲您指定的圖層添加一個gridLayer和gridControl。基本上地圖構造函數可以做出所有可能的安全假設,並且爲了方便起見,它們自動完成。

爲什麼tileLayer創建使用L.mapbox.tileLayer()比創建的不同並自動添加使用L.mapbox.map(3)?

這是一樣的 - 當你使用L.mapbox.map(3)時,有一個gridLayer和gridControl混合使用,而這些都是使事物互動的原因。

是否有計劃來解決這個不連續的未來變化的API

它沒有那麼多比API設計的不連續性:我們決定繼續從gridLayers和gridControls你可以混合分離圖塊層&匹配它們 - 如果要切換交互式特徵來自哪一層,或禁用交互性而不禁用切片層,則可以。

將支持TileMill 2中的交互式切片嗎?

不,您可以使用TileMill 2並查看它如何支持交互性。我們不會刪除或逐步刪除,儘管矢量切片將具有新的交互方法。

爲了您的第二個例子,你想是這樣的:

var map = L.mapbox.map("map", "username.id2", {}); 
var gridLayer = L.mapbox.gridLayer("username.id1").addTo(map); 
var gridControl = L.mapbox.gridControl(gridLayer).addTo(map); 

map 
    .addLayer(L.mapbox.tileLayer("username.id1"), true) 
    .setView(L.latLng(61, -160.5), 4) 
.setMaxBounds(L.latLngBounds(L.latLng(50,-180), L.latLng(72,-129))); 
+0

感謝您迴應和答疑。在TileMill或MapBox.js參考的任何地方是否使用GridLayers來進行這種交互?我到處看到我認爲是合理的,沒有出現。 – RyanMullins

+0

是的,[gridLayers]的文檔(https://www.mapbox.com/mapbox.js/api/v1.6.1/l-mapbox-gridlayer/),[gridControls](https://www.mapbox.com /mapbox.js/api/v1.6.1/l-mapbox-gridcontrol/)。 – tmcw

相關問題