2016-08-08 41 views
1

我正在使用Leaflet 1.0.0-rc.2 + e02b5c9。我知道默認渲染的所有標記,折線...從經度-180到180的屏幕截圖在這裏:如何在180°子午線附近顯示單張標記?

Default rendering image

但是,我想,以顯示地圖,因爲這經度我想在此展示點(這是日本和美國之間的中間海):

I want to show at this point

,但你看到的所有標記都不會呈現在右側。即使如果我設置

worldCopyJump: true 

當我拖動到右側,所有標記都出現在右側,但他們消失在左側,反之亦然。其實,我想讓他們同時出現。

任何想法解決這個問題?

+0

感謝您編輯@ghybs –

回答

1

只要確保經度您的標記的範圍是0..360,而不是範圍-180..180See a working example

換言之,如果經度小於零,則向其添加360。如果您打算一次過濾所有的經度,您可能需要使用L.Util.wrapNum(lng, [0,360], true)

+0

鏈接無效 – Icarus

1

類似的問題已經遇到並報告了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); 
} 
0

謝謝大家的幫助。其實,我沒有使用你的建議代碼,但我想到了解決它的想法。

這是我的解決方案,希望爲別人尋找相同的解決方案有所幫助: 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在。