2017-10-05 6 views
0

GeoJSONレイヤーの線を短くする簡単な方法はありますか?リーフレットGeoJSONは、目的地に到着する前にラインフィーチャをトリミングすることは可能ですか?

私は線を持っていますが、点Aから点Bに向かっています。私は、線の終点がマーカーの半径を超えないようにしたいと考えています。それは可能ですか?線の終点/原点からのオフセットのようなもの。ここで

は一例です:

私は50×50をしているアイコンを持っていますが、半透明(画像を参照)、私はアイコンの緯度/経度に行くラインを持っているが、私はトリミングを試してみたいですまたはアイコンがアイコンに入る前に線をオフセットするので、アイコンの下に線が表示されません。これは可能ですか?

この質問が不明な場合は、ご意見ください。 dashArraydashOffsetオプション使用して行うことができます

enter image description here

答えて

1

var map = new L.Map('leaflet', { 
 
    center: [0, 0], 
 
    zoom: 0 
 
}); 
 

 
new L.CircleMarker([0, 90], {radius: 30}).addTo(map); 
 
new L.CircleMarker([0, -90], {radius: 30}).addTo(map); 
 

 
var polyline = new L.Polyline([[0, -90], [0, 90]]).addTo(map); 
 

 
// Get length of the line 
 
var totalLength = polyline.getElement().getTotalLength(); 
 

 
polyline.setStyle({ 
 
    // Set dashArray to the length of the line minus radius * 2 
 
    dashArray: totalLength - 60, 
 
    // Offset by radius 
 
    dashOffset: -30 
 
});
body { 
 
    margin: 0; 
 
} 
 

 
html, body, #leaflet { 
 
    height: 100%; 
 
}
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>Leaflet 1.2.0</title> 
 
     <meta charset="utf-8" /> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
 
     <link type="text/css" rel="stylesheet" href="//unpkg.com/[email protected]/dist/leaflet.css" /> 
 
    </head> 
 
    <body> 
 
     <div id="leaflet"></div> 
 
     <script src="//unpkg.com/[email protected]/dist/leaflet.js"></script> 
 
    </body> 
 
</html>

+0

をあなたも ' "zoomend"'イベントの後にスタイルを更新する必要がありますように見えます。 – ghybs

+0

読者のためにいくつかのことを練習として残しておく必要があります;)@ghybs – iH8

+0

うわー。印象的なハック。 – IvanSanchez

関連する問題