gpt4 book ai didi

javascript - 2D 数组未转换为 D3 map 坐标

转载 作者:行者123 更新时间:2023-11-28 04:23:14 24 4
gpt4 key购买 nike

D3.js 不接受我创建的 2D 数组作为坐标(我使用的 map 示例位于 http://bl.ocks.org/phil-pedruco/6522279 。)

以下是事实:

1.) 我提供的 JSON 输入 是一串纬度和经度(例如 "37.3879 -134.96376")。

2.) 所需的输出是一个二维数组,必须采用以下形式[[lat,long],[lat,long],...]

3.) console.log(typeof(lat)); 返回纬度和经度值确实是数字(不是字符串)

4.) console.log("坐标:"+ JSON.stringify(points)); 返回 [[37.3879,-134.96376],[13.5,-45 ],...] - 其形式似乎正确,但 map 上未显示任何点

5.) 如果我对数组中的值进行硬编码,则会显示点。

var points = [];
//var dotSpot = [[1.4440, 32.442], [12.222, 4.893]];

window.onload = function () {
getJSON();
}

function getJSON(supplierID) {
//retrieves JSON perfectly
//calls make() with Supplier data
}

function make(jdata) {

for (var i = 0; i < jdata.length; i++) {
//Splits string by space
var temp = jdata[i].latLong.split(/[ ,]+/)
//Converts lat and long strings to floats
var lat = parseFloat(temp[0]);
var long = parseFloat(temp[1]);
console.log(typeof(lat));

//Add "curr" coordinates array to "points" array
var curr = new Array(lat, long);
points.push(curr);

}

console.log("Coordinates: " + JSON.stringify(points));
}

最佳答案

您已将坐标指定为[纬度,经度]。然而,与许多其他应用程序不同,D3 使用以经度作为第一个值的坐标,后跟纬度。来自 docs :

The point must be specified as a two-element array [longitude, latitude] in degrees.

相应地更改数据应该会产生所需的渲染:

var curr = new Array(long, lat);   // instead of new Array(lat, long)
points.push(curr);

关于javascript - 2D 数组未转换为 D3 map 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com