我正在使用Leaflet 1.0.0-rc.2 + e02b5c9。我知道默認渲染的所有標記,折線...從經度-180到180的屏幕截圖在這裏:如何在180°子午線附近顯示單張標記?
但是,我想,以顯示地圖,因爲這經度我想在此展示點(這是日本和美國之間的中間海):
,但你看到的所有標記都不會呈現在右側。即使如果我設置
worldCopyJump: true
當我拖動到右側,所有標記都出現在右側,但他們消失在左側,反之亦然。其實,我想讓他們同時出現。
任何想法解決這個問題?
我正在使用Leaflet 1.0.0-rc.2 + e02b5c9。我知道默認渲染的所有標記,折線...從經度-180到180的屏幕截圖在這裏:如何在180°子午線附近顯示單張標記?
但是,我想,以顯示地圖,因爲這經度我想在此展示點(這是日本和美國之間的中間海):
,但你看到的所有標記都不會呈現在右側。即使如果我設置
worldCopyJump: true
當我拖動到右側,所有標記都出現在右側,但他們消失在左側,反之亦然。其實,我想讓他們同時出現。
任何想法解決這個問題?
只要確保經度您的標記的範圍是0..360
,而不是範圍-180..180
。 See a working example。
換言之,如果經度小於零,則向其添加360。如果您打算一次過濾所有的經度,您可能需要使用L.Util.wrapNum(lng, [0,360], true)
。
鏈接無效 – Icarus
類似的問題已經遇到並報告了Leaflet Github
解決的辦法是增加你標記的經度如果他們最初的經度低於0
var totalMarkers = markerPositions.length;
for(var i = 0; i<totalMarkers; i++){
var mData = markerPositions[i];
if (mData.lon < 0) {
mData.lon += 360;
}
L.marker([mData.lat, mData.lon]).addTo(map);
}
謝謝大家的幫助。其實,我沒有使用你的建議代碼,但我想到了解決它的想法。
這是我的解決方案,希望爲別人尋找相同的解決方案有所幫助: Screenshot that was solved
始終顯示在地圖上的圖標及其複印件(經度範圍,你想,在我的情況下,從0 360)
makeMarkers: (item) ->
markers = []
markers.push(item.makeMarker())
copy_marker = item.makeMarker()
copy_marker.setLatLng(new L.LatLng(copy_marker._latlng.lat, copy_marker._latlng.lng + 360))
markers.push(copy_marker)
markers
在項目類:
makeMarker: ->
LeafletIcon = L.Icon.extend(
options: {
iconSize: [25, 25],
iconAnchor: [10, 10],
popupAnchor: [0, 0]
},
)
icon = new LeafletIcon({iconUrl: this.iconUrl})
marker = L.marker([this.latitude, this.longitude], {icon: icon, zIndexOffset: 10})
marker.id = this.id
marker
謝謝AGA在。
感謝您編輯@ghybs –