You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成可嵌入网站、标注美国各州客户数量的简易地图

用D3.js实现带永久数字标注的美国州客户数量地图

核心思路

直接用D3.js绘制SVG格式的美国州地图,在每个州的几何中心位置叠加显示对应的客户数量,完全满足数字永久显示、可嵌入网站的需求,无需依赖第三方工具的交互触发。

实现步骤与代码示例

  1. 准备数据

    • 美国各州边界GeoJSON数据:获取包含州名称(需和你的state列名称匹配)与边界坐标的GeoJSON文件,保存到本地项目中。
    • 客户数据:整理成JSON格式,示例如下:
      [
        {"state": "California", "count": 1433},
        {"state": "Texas", "count": 987},
        // 其余48个州数据...
      ]
      
  2. 可直接嵌入网页的完整代码

    <svg width="960" height="600" id="state-map"></svg>
    
    <script src="https://d3js.org/d3.v7.min.js"></script>
    <script>
      // 并行加载地图边界数据和客户数量数据
      Promise.all([
        d3.json("us-states.geojson"), // 替换为你的GeoJSON本地文件路径
        d3.json("customer-counts.json") // 替换为你的客户数据本地文件路径
      ]).then(([statesData, customerData]) => {
        // 建立州名到客户数量的映射关系
        const countMap = new Map(customerData.map(item => [item.state, item.count]));
        // 给每个州的地图数据绑定对应的客户数量
        statesData.features.forEach(feature => {
          feature.properties.count = countMap.get(feature.properties.name) || 0;
        });
    
        // 设置地图投影与路径生成器
        const svg = d3.select("#state-map");
        const projection = d3.geoAlbersUsa().fitSize([960, 600], statesData);
        const pathGenerator = d3.geoPath().projection(projection);
    
        // 绘制州的边界图形
        svg.selectAll("path")
          .data(statesData.features)
          .enter()
          .append("path")
          .attr("d", pathGenerator)
          .attr("fill", "#f5f5f5")
          .attr("stroke", "#666")
          .attr("stroke-width", 1);
    
        // 添加客户数量文本标注
        svg.selectAll("text")
          .data(statesData.features)
          .enter()
          .append("text")
          .attr("x", d => pathGenerator.centroid(d)[0])
          .attr("y", d => pathGenerator.centroid(d)[1])
          .attr("text-anchor", "middle")
          .attr("font-size", "12px")
          .attr("fill", "#222")
          .text(d => d.properties.count);
      });
    </script>
    
  3. 自定义优化

    • 修改fill、stroke属性可调整州的底色与边框样式。
    • 调整font-size、fill属性能优化数字的显示清晰度。
    • 若需动态更新数据,只需替换customer-counts.json的内容,或通过fetch请求后端接口实时获取最新客户数。

网站嵌入方法

将上述代码直接插入网页的HTML结构中,确保GeoJSON文件和客户数据文件的路径正确,即可生成可嵌入且数字永久显示的动态地图。

内容的提问来源于stack exchange,提问作者ChaosFreak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:55:15