2017-02-01 2 views
0

jsファイルとして保存された2つの異なるJSONデータレイヤを持つリーフレット.jsマップを作成しています。2つのデータレイヤのジオマーカを線で結ぶ

最初のデータファイルには、いくつかのニュースルームとニュースルームのIDのジオロケーションが含まれています.2つ目のセクションには、ニュースルームのIDだけでなく、いくつかの記事のジオロケーションが含まれています。

私はこれらの場所をプロットし、

両方のデータ層は変数として保存されているID Xにニュースルームに回線を介してID Xを持つすべての記事を接続したいです。私はジオロケーションをプロットする方法を知っていますが、レイヤー2のジオポイントとレイヤー1の一致するジオポイントをラインで接続する方法を理解することはできません。助言がありますか?

これは私がこれまで何をやったかである:

function myFunction() { 

var map = L.map('map').setView([51.101516, 10.313446], 6); 
    // improve experience on mobile 
    if (map.tap) map.tap.disable(); 
    L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}', { 
    attribution: 'Tiles © Esri — Esri, DeLorme, NAVTEQ', 
    maxZoom: 16 
}).addTo(map); 
    map._layersMinZoom=5; 


for (var i in artikeldaten){ 
     data = artikeldaten[i]; 

     L.circleMarker([data.lat, data.long], { 
      radius: 4, 
      color: '#000', 
      fillColor: '#000', 
      fillOpacity: 1, 
     }).addTo(map) 

     } 

for (var i in blogdaten){ 
     data = blogdaten[i]; 

    L.circleMarker([data.lat, data.long], { 
      radius: 5, 
      color: '#000', 
      fillColor: '#000', 
      fillOpacity: 1, 
     }).addTo(map)    
     } 
} 

そして、これは、データがどのように見えるかです:

var artikeldaten = [ 
{ 
    "ID": 12, 
    "long": 6.7667818, 
    "lat": 51.2135308, 
}, 
{ ... and so on 
+0

IDの基数が何を反復している間

var newsroomsById = {}; // key: ID for(i=0; i<newsrooms.length; i++) { newsroomsById[newsrooms[i].ID] = newsrooms[i]; } 

次に、あなたのポリラインを描画することができますか? 'blogdaten'にはいくつかの' artikel'がありますか? 'artikel'にはいくつか' blogdaten'がありますか? – IvanSanchez

+0

あなたのニュースルームと各記事との間にL.Polylineを作成するのは簡単ではありませんか? http://leafletjs.com/reference-1.0.3.html#polyline – YaFred

+0

ブログの記事ごとにいくつかの記事があります! Francelmageにも私はそう思っていましたが、同時に2つのデータソースをどのようにループするのか分からないので、自動的に行う方法を理解できません。 –

答えて

1

私はうまく問題を理解していれば、あなたのいずれかを配置する必要があります最初に連想配列のあなたのリスト。あなたがあなたの記事

for(i=0; i<articles.length; i++) { 
    // retrieve newsroom 
    var newsroom = newsroomsById[articles[i].ID]; 
    // draw your polyline 
    var latlngs = [ 
     [articles[i].lat, articles[i].lng], 
     [newsroom .lat, newsroom.lng] 
    ]; 
    var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map); 
} 
+0

ありがとうございました! –

+0

これは素晴らしいことです!私の次の仕事の提案もありますか?クリックイベントをブログの場所に追加して、他のブログがぼやけてクリックされたネットワークをよりよく見ることができるようにしたいと思います。または、地図に追加された検索バーで特定のブログIDを検索して同じことをする。 :) –

+0

別の質問をすることをお勧めします。理想的には、あなたが現在持っているものへのリンクを入れてください。私はhttp://www.franceimage.com/map/?llz=46.566414,2.4609375,6ここに複数のチャンネルの例があります。私はすべてのチャンネルのマーカを表示しようと試みます(あなたの望むものだと思います) – YaFred

関連する問題