Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3投影变换中的数据位置_Javascript_D3.js_Projection - Fatal编程技术网

Javascript d3投影变换中的数据位置

Javascript d3投影变换中的数据位置,javascript,d3.js,projection,Javascript,D3.js,Projection,数据位置如何包含在d3投影变换中 我做了一个基于 显然,数据点不遵循投影变换。这是我添加的相关javascript: //========================================== var button = d3.select("#button") .on("click", function(){ drawDot(); }); function drawDot(){ var coordinates = projection([d

数据位置如何包含在d3投影变换中

我做了一个基于

显然,数据点不遵循投影变换。这是我添加的相关javascript:

//==========================================
var button = d3.select("#button")
    .on("click", function(){
       drawDot();
     });

function drawDot(){
    var coordinates = projection([d3.select("#lon").property("value"),
                                  d3.select("#lat").property("value")]);
    d3.select('svg')
        .append('svg:circle')
        .attr('cx', coordinates[0])
        .attr('cy', coordinates[1])
        .attr('r', 5);
}
//==========================================

首先,你的JS提琴坏了

查看bl.ocks演示,它在更新时选择路径对象并对其进行转换

以下是一个工作示例:

因此,圆需要是一个具有“d”属性集的路径元素。要做到这一点,我们需要将基准设置为我们想要的圆对象,在这种情况下,它使用“geo”类型来工作(shor用于地理)

因此,我们将地球圆的原点设置为中心的长/宽,“角度”是我们的半径


然后,我们使用d3.geo.path()将属性“d”设置为路径,然后通过在选择中选择当前选定的选项并检索关联的投影,将其“投影”到形状上

首先,你的JS小提琴坏了

查看bl.ocks演示,它在更新时选择路径对象并对其进行转换

以下是一个工作示例:

因此,圆需要是一个具有“d”属性集的路径元素。要做到这一点,我们需要将基准设置为我们想要的圆对象,在这种情况下,它使用“geo”类型来工作(shor用于地理)

因此,我们将地球圆的原点设置为中心的长/宽,“角度”是我们的半径


然后,我们使用d3.geo.path()将属性“d”设置为路径,然后通过在选择中选择当前选定的选项并检索关联的投影,将其“投影”到形状上

谢谢。我在我更新的JS小提琴中尝试了你的第一个建议,但点仍然没有移动。现在它更清晰了一点,所以它必须是圆上的路径元素,因为它转换了“d”属性,我不能让它静止不动,但我会继续尝试最终一个小图像应该在点而不是圆上居中,我不知道这会不会有什么不同。我无法帮你制作图片,但我已经更正了我的答案,现在应该可以了。谢谢。我在我更新的JS小提琴中尝试了你的第一个建议,但点仍然没有移动。现在它更清晰了一点,所以它必须是圆上的路径元素,因为它转换了“d”属性,我不能让它静止不动,但我会继续尝试最终一个小图像应该在点而不是圆上居中,我不知道这是否有什么不同。我不能帮你制作一张图片,但我已经更正了我的答案,现在应该可以了
function drawDot(){
var coordinates = projection([d3.select("#lon").property("value"),
                              d3.select("#lat").property("value")]);
d3.select('svg')
    .append('path')
    .datum(d3.geo.circle().origin(coordinates).angle(2))
    .attr('d', d3.geo.path().projection(options[d3.select("#projection-menu")[0][0].selectedIndex].projection));}