javascript – d3.js在d3.geo.path中添加一个圆

我已经创建了一个一个mbtile转换为geojson的地图,投影是wgs84.我加载它:
var map = svg.append("g").attr("class","map");
var path = d3.geo.path().projection(d3.geo.albers().origin([3.4,46.8]).scale(12000).translate([590,570]));
    d3.json('myjsonfile.json',function(json) {
        map.selectAll('path').data(json.features).enter().append('path').attr('d',path)
});

现在我想在我的svg中添加一个svg元素(一个点,一个圆圈,一个点(我不知道))及其(lat,lng)坐标.

我不知道该怎么做

解决方法

您需要分离投影,以便您可以再次使用它来投影您的观点:
var map = svg.append("g").attr("class","map");
var projection = d3.geo.albers()
    .origin([3.4,46.8])
    .scale(12000)
    .translate([590,570]);
var path = d3.geo.path().projection(projection);
d3.json('myjsonfile.json',function(json) {
    map.selectAll('path')
        .data(json.features)
      .enter().append('path').attr('d',path);
    // Now use the projection to project your coords
    var coordinates = projection([mylon,mylat]);
    map.append('svg:circle')
        .attr('cx',coordinates[0])
        .attr('cy',coordinates[1])
        .attr('r',5);
});

另外一种方法就是用点调整投影坐标:

map.append('svg:circle')
    .attr("transform",function(d) { 
        return "translate(" + projection(d.coordinates) + ")"; 
    })
    .attr('r',5);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...