2016-07-22 34 views
1

有什麼辦法來調整地圖的界限,使俄羅斯的右邊緣沒有出現過的左/邊緣?您可以在圖像中看到覆蓋俄羅斯的MultiPolygon區域,但地圖和疊加層被分割。如果可能的話,我希望這個國家的一小塊地方能夠在右邊!在地圖上的錯誤的一邊俄羅斯的設置地圖的邊界時NOWRAP從事

邊緣:

enter image description here

回答

0

歡迎SO!

如果你的多邊形是藍色區域,恐怕你必須重構你的數據才能達到你想要的效果(把左邊區域移到右邊,好像它被縫合回俄羅斯的主要土地) 。

你的數據(可能以GeoJSON?)含有一個單獨的多邊形,其經度是在[-180,-120]範圍內。宣傳冊別無選擇,只能將其顯示在地圖的左側,與noWrap選項無關。

所以,你會需要深入挖掘數據,並添加東經360度這個多邊形的每個節點,使他們現在坐的範圍是[180,300]。

或者以某種方式在你的代碼中引入一個「檢測」,它會自動爲邊界和/或中心遠離的形狀(比如說在[-180,-120]經度範圍內)執行經度增加。宣傳單不會自動立即執行該操作。

注意:noWrap選項是爲了讓您的圖層不在該「中心」世界之外加載圖塊(以避免顯示世界的多個副本)。但在你的情況下,你想想要在「相鄰的世界副本」上顯示俄羅斯/西伯利亞的一部分,所以你可能想要刪除該選項,否則你的多邊形不會坐在任何底圖上。

+0

我想我的問題是,有一個事實是,在世界地圖上的鄰近拷貝俄羅斯的一小部分。有什麼辦法可以將它移動到其他地圖?有效地將地圖的視口向右移動一點。 是否可以決定邊界框的「頂部,左邊」和「底部,右邊」,我可以查看該地圖? – appaulmac

+0

至於導航/互動,請參考chrki的答案和地圖的maxBounds選項。至於從「中心世界」瓷磚中隱藏西伯利亞並在「右手邊的世界」上展示它,您可能會對[TileLayer.BoundaryCanvas](https://github.com/aparshin/leaflet-boundary-canvas)插件感興趣。 – ghybs

+0

至於移動您的多邊形,如上面的答案中所述,您可以重構您的數據,或嘗試組成一個「檢測」的遠東多邊形,需要移動360度東經東區(您將添加與GeoJSON數據中的每個經度座標成360度)。 – ghybs

0

我能想到的一種解決方法是使用maxBounds屬性,您可以將默認邊界稍微向右移動,同時使用minZoom: 1。這不會阻止用戶在很短的時間內多次看到世界,因爲它說:

...當用戶試圖在外面平移時彈回用戶鑑於

var map = L.map('map',{ 
    maxBounds:[ [-90, -160], [90, 200] ], 
    minZoom: 1 
    }).setView([66.058, 189.459], 4); 

Demo

+0

感謝您的加入。我喜歡這種方式在拖動時強制在地圖上反彈。不幸的是,它不能解決我原來的問題,但是這個功能仍然會進入我的代碼:) – appaulmac