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
}
});
});
もこれに気づきました。 get responseとして渡されるデータは、3000文字以上の長さにすることができます。私はそれが問題だと思います。ブラウザはすべての座標を待っていません。
何か助けや洞察力は本当に感謝しています。