限时优惠活动
亲爱的苦力吧用户,我们为了回馈新老用户一直以来的鼎力支持,即日起(2025-02-06至2025-03-06)凡是购买苦力吧VIP/充值K币的新老用户,都直接可获得买一送一的优惠馈赠。例如:购买一个月的VIP会员可直接获得两个月的VIP会员;充值100K币可直接获得200K币,以此类推!有任何疑问可联系在线客服,感谢各位用户对苦力吧素材的信任与厚爱,我们将一如既往的给大家上新更多优质的素材源码,祝大家开工大吉、工作顺利、心想事成。

javascript基于D3.js库创建的可视化世界地图特效

所属分类: 网页特效-地图&标注    2024-03-06 08:36:27

javascript基于D3.js库创建的可视化世界地图特效 ie兼容6
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

javascript基于D3.js库创建的可视化世界地图特效(共4个文件)

    • index.html

使用方法

const svg = d3.select('svg');

const projection = d3.geoNaturalEarth1();
const pathGenerator = d3.geoPath().projection(projection);

const g = svg.append('g');

const colorLegendG = svg.append('g')
   .attr('transform', `translate(40,310)`);


g.append('path')
    .attr('class', 'sphere')
    .attr('d', pathGenerator({type: 'Sphere'}));

svg.call(d3.zoom().on('zoom', () => {
  g.attr('transform', d3.event.transform);
}));
 const colorScale = d3.scaleOrdinal();

 const colorValue = d => d.properties.economy;

const loadAndProcessData = () =>

  Promise.all([
    d3.tsv('https://unpkg.com/world-atlas@1.1.4/world/50m.tsv'),
    d3.json('https://unpkg.com/world-atlas@1.1.4/world/50m.json')
  ])
  
  .then(([tsvData, topoJSONdata]) => {
  
  const rowById = tsvData.reduce((accumulator, d) => {
    accumulator[d.iso_n3] = d;
    return accumulator;
  }, {});
  
  const countries = topojson.feature(topoJSONdata, topoJSONdata.objects.countries);
    
     countries.features.forEach(d =>{
   Object.assign(d.properties, rowById[d.id])
  });
  
  return countries;
  
});

const colorLegend = (selection, props) => {
  const {
    colorScale,
    circleRadius,
    spacing,
    textOffset,
    backgroundRectWidth
  } = props;
  
  const backgroundRect = selection.selectAll('rect')
    .data([null]);
  
  const n = colorScale.domain().length;
  backgroundRect.enter()
    .append('rect')
    .merge(backgroundRect)
    .attr('x', -circleRadius * 2)
    .attr('y', -circleRadius * 2)
    .attr('rx', circleRadius * 2)
    .attr('width', backgroundRectWidth)
    .attr('fill', 'white')
    .attr('height', spacing * n + circleRadius * 2)

  const groups = selection.selectAll('.tick')
    .data(colorScale.domain());
  const groupsEnter = groups
    .enter().append('g')
      .attr('class', 'tick');
  groupsEnter
    .merge(groups)
      .attr('transform', (d, i) =>
        `translate(0, ${i * spacing})`
      );
  groups.exit().remove();
  
  groupsEnter.append('circle')
    .merge(groups.select('circle'))
      .attr('r', circleRadius)
      .attr('fill', colorScale);
  
  groupsEnter.append('text')
    .merge(groups.select('text'))
      .text(d => d)
      .attr('dy', '0.32em')
      .attr('x', textOffset);
}

  loadAndProcessData().then(countries => {
  console.log(colorScale);
 colorScale.domain(countries.features.map(colorValue))
    .domain(colorScale.domain().sort().reverse())
    .range(d3.schemeSpectral[colorScale.domain().length]);
    
  colorLegendG.call(colorLegend, {
  colorScale,
  circleRadius: 8,
  spacing: 20,
  textOffset: 15,
  backgroundRectWidth: 240
});
  
  g.selectAll('path').data(countries.features)
    .enter().append('path')
      .attr('class', 'country')
      .attr('d', pathGenerator)
      .attr('fill', d => colorScale(colorValue(d)))
    .append('title')
      .text(d => d.properties.name + ' : ' + colorValue(d));
  
});

站长提示:
1. 苦力吧素材官方QQ群:950875342
2. 平台上所有素材资源,需注册登录会员方能正常下载。
3. 会员用户积极反馈网站、素材资源BUG或错误问题,每次奖励2K币
4. PHP源码类素材,如需协助安装调试,或你有二次开发需求,可联系苦力吧客服。
5. 付费素材资源,需充值后方能下载,如有任何疑问可直接联系苦力吧客服
相关资源 / 地图&标注

layui腾讯地图服务范围可视化编辑

一款基于腾讯地图绘制的自定义范围区域,服务范围可视化编辑,主要应用场景比如,某一个区县只有市区范围内提供服务,这个时候就需要人为划范围了。 插件需要两个参数 overlays(图层数据)、markers(标记数据)。 具体格式可参考 latlng.json 文件。
  地图&标注
 1112  0

svg地图控件jquery.jvectormap

一款可放大缩小、标注的矢量地图插件,包含多种功能特效,大家可以看演示。
  地图&标注
 5374  0

基于jquery地图特效全国网点查看代码

一款全国网店地图标注特效,鼠标hover标注点显示标注的信息,非常实用!
  地图&标注
 1377  0

jquery可动态着色添加图片的SVG地图插件

一个轻量级的SVG操作地图插件,可动态更改SVG图片的填充或背景色属性,带清除操作功能。
  地图&标注
 4308  0

评论数(0) 回复有机会获得K币 用户协议

^_^ 还没有人评论,快来抢个沙发!
😀
  • 😀
  • 😊
  • 😂
  • 😍
  • 😑
  • 😷
  • 😵
  • 😛
  • 😣
  • 😱
  • 😋
  • 😎
  • 😵
  • 😕
  • 😶
  • 😚
  • 😜
  • 😭
发表评论