如何使用javascript中API调用的结果动态构建geoJSON

如何使用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

我有一个调用的API,它返回英国坐标系坐标对,如下所示:

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]
                    }

                });
            }