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

jVectorMap 2.0.5版本在WordPress中无法渲染地图的问题求助

jVectorMap 2.0.5在WordPress中渲染失败,报错translate(Infinity, 0)

问题概述

静态HTML/JS环境中jVectorMap 2.0.5可正常运行,但在WordPress通过wp_enqueue_scripts引入资源后,地图无法渲染,控制台抛出错误:

<g> attribute transform: Expected number, "…le(0) translate(Infinity, 0)"
错误来自jquery-jvectormap-2.0.5.min.js,此前1.1.1版本在WordPress中可正常工作。

问题原因

该错误通常因地图初始化时容器尺寸计算为0,导致缩放逻辑出现无限值(Infinity),触发SVG属性解析失败。根源多为资源加载顺序错误、jQuery冲突、容器渲染时机问题或缺少必要CSS。

解决方案

1. 修正资源依赖与加载顺序

WordPress的脚本依赖必须严格对应,地图数据脚本需依赖核心jVectorMap脚本,自定义初始化脚本需依赖地图数据脚本,同时避免重复引入jQuery:

// 加载jVectorMap样式(静态环境中可能已引入,WordPress需手动添加)
wp_enqueue_style('jvectormap-css', plugin_dir_url(__FILE__) . 'assets/css/jquery-jvectormap-2.0.5.css', [], null);

// 使用WordPress自带jQuery,无需重复引入外部版本
wp_enqueue_script('jvectormap-jquery', plugin_dir_url(__FILE__) . 'assets/js/jquery-jvectormap-2.0.5.min.js', ['jquery'], null, true);
// 地图数据脚本依赖核心jVectorMap脚本
wp_enqueue_script('jvectormap-world-mill', plugin_dir_url(__FILE__) . 'assets/js/jquery-jvectormap-world-mill.js', ['jvectormap-jquery'], null, true);
// 自定义初始化脚本依赖地图数据脚本
wp_enqueue_script('wmq-world-map', plugin_dir_url(__FILE__) . 'assets/js/wmq-world-map.js', ['jvectormap-world-mill'], null, true);
wp_enqueue_script('wmq-quiz', plugin_dir_url(__FILE__) . 'assets/js/quiz.js', ['jquery'], null, true);

2. 确保容器尺寸初始化时机正确

改用window.load替代document.ready,确保页面所有元素(包括样式)渲染完成后再初始化地图,同时添加尺寸检查:

(function ($) {
  $(window).on('load', function(){
    const $mapContainer = $('#map');
    // 强制确保容器有明确尺寸,避免主题样式覆盖
    $mapContainer.css({
      width: '950px',
      height: '450px',
      display: 'block' // 防止容器被设置为inline导致尺寸计算异常
    });

    $mapContainer.vectorMap({
      map: "world_mill",
      backgroundColor: "#809fff",
      zoomOnScroll: false,
      regionStyle: {
        initial: {
          stroke: "black",
          "stroke-width": 0.3,
          fill: "#fff",
        },
        hover: {
          fill: "#ddd",
          "fill-opacity": 1,
        },
      },
      series: {
        regions: [
          {
            attribute: "fill",
          },
        ],
      }
    });
  });
})(jQuery);

3. 排查主题样式冲突

检查WordPress主题是否有CSS规则覆盖了#map容器的宽高或display属性,可通过浏览器开发者工具查看容器的实际计算尺寸,必要时给容器添加更具体的选择器或!important强制生效:

#mapWrapper #map {
  width: 950px !important;
  height: 450px !important;
  display: block !important;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:40:51