如何使用javascript中API调用的结果动态构建geoJSON
我有一个调用的API,它返回英国坐标系坐标对,如下所示:如何使用javascript中API调用的结果动态构建geoJSON,javascript,leaflet,geojson,Javascript,Leaflet,Geojson,我有一个调用的API,它返回英国坐标系坐标对,如下所示: 511062.800,171591.800 我已清理了数据,并使用以下代码将其转换为与传单兼容的坐标: function coordinatesTransformer(jsonData){ const finalCleanedArray = jsonParser(jsonData); console.log(finalCleanedArray); for (var i = 0; i < finalCl
511062.800,171591.800
我已清理了数据,并使用以下代码将其转换为与传单兼容的坐标:
function coordinatesTransformer(jsonData){
const finalCleanedArray = jsonParser(jsonData);
console.log(finalCleanedArray);
for (var i = 0; i < finalCleanedArray.length; i++) {
var x = finalCleanedArray[i].split(',');
console.log(x);
var p_wgs84 = "+proj=longlat +datum=WGS84 +no_defs";
var p_osgb = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs";
transformer = proj4(p_wgs84, p_osgb);
// transform coordinates to OSGB
var xy = transformer.inverse([parseInt(x[0]), parseInt(x[1])]);
console.log(xy);
for (var j = 0; j < xy.length; j++){
/*console.log(xy[j]);*/
var lat = parseFloat(xy[0]);
console.log(lat);
var lon = parseFloat(xy[1]);
console.log(lon);
var geoJsonInit = {
type: "FeatureCollection",
features: []
};
var lonArray = [];
var latArray = [];
latArray.push(xy[j]);
lonArray.push(xy[j+1]);
console.log(latArray);
console.log(lonArray);
for (j in xy) {
geoJsonInit.features.push({
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [lonArray, latArray]
}
});
}
console.log(geoJsonInit);
}
}
}
代码似乎不像前面的代码块那样在lonArray或latArray中迭代。控制台记录转换后的坐标对的每个值,但在向geoJson对象添加坐标值时,我似乎无法让代码进行迭代
这是console.log屏幕截图,如果我向上滚动console.log,第236行和第237行根据转换的坐标对显示不同的值,但是当我将它们添加到geojson时,您可以看到坐标对变得相同:
坐标对变得相同
这很可能是来自浏览器控制台的工件:当您展开对象来检查它时,它使用它现在的值,而不是调用console.log
时的值
通常
JSON.stringify
-ing在控制台中显示之前会显示这种行为差异。当我stringify时,它会给我与[]中的浮点整数相同的值,就像这样[51.43260384420582]
My bad,看起来你们只是把嵌入循环中的j
索引和外部循环混在一起了。你们能给问题添加xy
对象数据吗
for (j in xy) {
geoJsonInit.features.push({
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [lonArray, latArray]
}
});
}