2017-04-02 8 views
1

OSMデータを使用するマップ上でユーザがクリックして、Mapboxによってレンダリングされるときに、通りを描画しようとしています。クリックから座標を取得してサーバーに送信し、Nominatimが特定の通りに提供するLineStringsを返します。私は長い通りでは問題があります:彼らは不完全であるように見えます(例えば100mの正確に描かれた線、そして100の線が抜けてから再び線が引かれます)。より多くのセグメント。私の意見では、この問題は、osmが不完全なデータを持っている(私はそれは疑いますが)か、データを正確に描画/ロードしないために発生する可能性があります。MapboxとNominatimを使って複数のGeoJSON線を描く

map.on("click", function(e) { 
 
     //get coordinates and send them to the server. 
 

 
     function getRequest() { 
 
     return $.ajax({ 
 
      url: "/street", 
 
      data: clickCoords, 
 
     }); 
 
     }; 
 

 
     $.when(getRequest()).done(function(response, status, jqXHR) { 
 
     streetGEOJSON = response; 
 
     var feat = []; 
 
     for (var i = 0; i < streetGEOJSON.length; i++) { 
 
      feat[i] = { 
 
      "type": "Feature", 
 
      "geometry": { 
 
       "type": "LineString", 
 
       "coordinates": streetGEOJSON[i] 
 
      } 
 
      } 
 
     } 
 
     var lines = { 
 
      "type": "geojson", 
 
      "data": { 
 
      "type": "FeatureCollection", 
 
      "features": feat 
 
      } 
 
     } 
 
     map.addSource("street", lines); 
 

 
     map.addLayer({ 
 
      "id": "street", 
 
      "type": "line", 
 
      "source": "street", 
 
      "filter": ["==", "$type", "LineString"], 
 
      "layout": { 
 
      "line-join": "round", 
 
      "line-cap": "round" 
 
      }, 
 
      "paint": { 
 
      "line-color": "#888", 
 
      "line-width": 8 
 
      } 
 
     }); 
 
     });
wronly描かれた通りの例:私のコードは、そのように見える http://prntscr.com/erg0r0http://prntscr.com/erfwhr

もこれに気づきました。 get responseとして渡されるデータは、3000文字以上の長さにすることができます。私はそれが問題だと思います。ブラウザはすべての座標を待っていません。

何か助けや洞察力は本当に感謝しています。

答えて

2

誰かが同様の問題に遭遇した場合、回答を投稿します:)問題はサーバーからの要求ではなく、検索結果を減らすための問題ではありませんでしたので、解決策はnominatimの取得要求に& dedupe = 0を含めることでした。

関連する問題