2016-08-08 41 views
1

Ich verwende Leaflet 1.0.0-rc.2 + e02b5c9. Ich weiß, das standardmäßig alle Marker rendert, Polylinien ... von Länge -180 bis 180 als Screenshot hier:Wie können Sie Merkblätter in der Nähe des 180 ° Meridians anzeigen?

Default rendering image

Allerdings möchte ich die Karte als diese Länge zeigen, dass ich auf diese zeigen wollen Punkt (Es ist Mitte Meer zwischen Japan und USA):

I want to show at this point

aber sehen Sie alle Markierungen werden nicht auf der rechten Seite gemacht. Wenn ich allerdings auch, setzen

worldCopyJump: true 

, wenn ich nach rechts ziehen, werden alle Markierungen auf der rechten Seite erschienen, aber sie sind auf der linken Seite verschwunden und umgekehrt. Eigentlich möchte ich, dass sie zur gleichen Zeit erscheinen.

Irgendwelche Ideen, das zu beheben ??

+0

Vielen Dank für die Bearbeitung @ghybs –

Antwort

1

Nur, dass die Längen Ihrer Marker liegen im Bereich 0..360 statt im Bereich -180..180. See a working example.

Mit anderen Worten, wenn eine Länge kleiner als Null ist, fügen Sie 360 ​​hinzu. Sie können stattdessen L.Util.wrapNum(lng, [0,360], true) verwenden, wenn Sie alle Ihre Längen auf einmal filtern möchten.

+0

Der Link ist nicht mehr gültig – Icarus

1

Ein ähnliches Problem wurde auf die Leaflet Github

Die Lösung unten gestoßen und berichtete über die Länge Ihres Markers zu erhöhen, wenn ihre ursprüngliche Länge ist sicher, 0 ist

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

Vielen Dank für die Hilfe. Eigentlich verwende ich nicht Ihre vorgeschlagenen Codes, aber ich habe die Idee, es zu beheben.

Dies ist meine Lösung, hoffen, dass es für andere nützlich für gleiche Lösung suchen: Screenshot that was solved

immer das Symbol angezeigt und die Kopie auf der Karte (auf Länge reichen Sie wollen, in meinem Fall ist es von 0

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 

In Artikel Klasse bis 360

):

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 

Danke aga im.