Javascript 如何使用d3.js将纬度和经度转换为(x,y)坐标

Javascript 如何使用d3.js将纬度和经度转换为(x,y)坐标,javascript,d3.js,Javascript,D3.js,我正在使用d3.js制作我的国家地图。我使用谷歌地图url来提取一些点的经度和纬度值。为了使用d3显示一个点,我需要将其转换为(x,y)像素值,并将其存储在城市数组中。我知道这个问题是关于投影的,但我无法解决它 这是我代码的一部分 var projection = d3.geoMercator().fitSize([width, height], json); var path = d3.geoPath().projection(projection); var URL = "https

我正在使用d3.js制作我的国家地图。我使用谷歌地图url来提取一些点的经度和纬度值。为了使用d3显示一个点,我需要将其转换为(x,y)像素值,并将其存储在城市数组中。我知道这个问题是关于投影的,但我无法解决它

这是我代码的一部分

var projection = d3.geoMercator().fitSize([width, height], json);
var path = d3.geoPath().projection(projection); 


var URL =  "https://www.google.com.tr/maps/place/Ankara/@39.9035553,32.6223376,11z/data=!3m1!4b1!4m5!3m4!1s0x14d347d520732db1:0xbdc57b0c0842b8d!8m2!3d39.9333635!4d32.8597419?hl=tr";

var splitUrl = URL.split('@');
var coords = splitUrl[1].split(',');

console.log(coords[0]); 
console.log(coords[1]); 

cities.push([coords[0], coords[1]]);

您不需要将数据转换为(x,y)像素对。使用
d3.geoPath.projection(projection)
时,您已将
d3.geoPath()
路径生成器设置为使用指定的投影自动将(纬度、经度)对转换为(x、y)对

您需要做的是获取(lat,long)对并使用它们生成GeoJSON对象,然后将其馈送到
d3.geoPath
生成器。你可能会想要一份工作

因此,您的代码可能如下所示:

var projection = d3.geoMercator().fitSize([width, height], json);
var pathGenerator = d3.geoPath(projection);

var URL =  "https://www.google.com.tr/maps/place/Ankara/@39.9035553,32.6223376,11z/data=!3m1!4b1!4m5!3m4!1s0x14d347d520732db1:0xbdc57b0c0842b8d!8m2!3d39.9333635!4d32.8597419?hl=tr";

var splitUrl = URL.split('@');
var coords = splitUrl[1].split(',');

var geoJsonPoint = {
    type: "Point",
    coordinates: coords,
} 

pathGenerator.path(geoJsonPoint);

将纬度和经度转换为(x,y)值总是会有一些错误,因为在不变形球体的情况下,无法将球体拟合到平面上。生成这些(x,y)坐标的方法在很大程度上取决于使用这些坐标的目的。你想做什么?我想在从谷歌地图链接检索到的地图中绘制坐标。为什么要使用路径作为点?简单地使用:
projection([long,lat])
将返回给定投影中该点的投影x,y值,这不是更直接吗?如果他们只想得到投影坐标,那就可以了,但事实上他们确实想渲染投影点,正如他们在问题的评论中所说的。啊,很公平。我想我主要关注的是“我需要将其转换为(x,y)像素值,并将其存储在一组城市中。”