将自定义区域与 JQVmap 结合使用

2024-01-19

我正在使用 JQVmap (https://github.com/manifestinteractive/jqvmap https://github.com/manifestinteractive/jqvmap)以输出站点上的地图。我不想将鼠标悬停在每个国家/地区时执行某些操作,而是希望将它们分组为区域。例如,当您将鼠标悬停在其中任何一个上并进行一组国家/地区时,我希望这三个国家都显示悬停状态,而不是加拿大、美国和墨西哥。我看过很多关于如何为国家/地区集着色的帖子,但每个国家/地区仍然有自己的悬停状态,并且不会触发具有相同颜色的其他国家/地区的悬停状态。有任何想法吗?


我正在做一个项目,需要这样做。我是这样做的。

  1. 定义您想要的区域。
  2. 添加辅助方法来突出显示/取消突出显示一个区域中所有国家/地区的国家/地区。
  3. 将这些辅助方法添加为地图的“onRegionOver”和“onRegionOut”方法。

Step 1.

这是我定义区域的方式。

var regionMap = {
        "southAmerica" :{
        "countries" : ["ar", "bo", "br", "cl", "co", "ec", "fk", "gy", "gf", "pe", "py", "sr", "uy", "ve"],
        "name" : "South America"
    },
        "northAmerica" :{
        "countries" : ["ca", "gl", "us"],
        "name" : "Northern America"
    }
}; //And so on...

我还添加了一个地图和一个用于反向查找的方法。

var countryMap = {
    "ca":"northAmerica",
    "gl":"northAmerica",
    "us":"northAmerica",
}; //And so on...
function getRegion(cc) {
    var regionCode = countryMap[cc];
    return regionMap[regionCode];
}

或者,您可以避免反向查找映射并编写一个函数:

function getCountriesInRegion(cc) {
    for (var regionKey in regions)
    {
        var countries = regionMap[regionKey].countries;
        for (var countryIndex in countries)
        {
            if (cc == countries[countryIndex])
            {
                return countries;
            }
        }
    }
}

Step 2

用于突出显示/取消突出显示区域的辅助方法:

function highlightRegionOfCountry (cc) {
    var countries = getRegion(cc).countries;
    for (countryIndex in countries)
    {
        $('#vmap').vectorMap('highlight',countries[countryIndex]); 
    }
    $('#vmap').vectorMap('highlight',cc);
}

function unhighlightRegionOfCountry (cc) {
    var countries = getRegion(cc).countries;
    for (countryIndex in countries)
    {
        $('#vmap').vectorMap('unhighlight',countries[countryIndex]);    
    }
    $('#vmap').vectorMap('unhighlight',cc);
}

Step 3.

添加将辅助方法注册到地图的悬停事件。

jQuery(document).ready(function() {
    jQuery('#vmap').vectorMap({
        map: 'world_en',
        backgroundColor: '#333333',
        color: '#ffffff',
        hoverOpacity: 0.2,
        selectedColor: '#666666',
        enableZoom: true,
        showTooltip: true,
        onRegionOver : function (element, code, region)
        {
            highlightRegionOfCountry(code);
        },
        onRegionOut : function (element, code, region)
        {
            unhighlightRegionOfCountry(code);
        }
    });
});

tl;dr:使用这些:

$('#vmap').vectorMap('highlight', countryCode);

and

$('#vmap').vectorMap('unhighlight', countryCode); 

我的项目所需的区域是联合国定义的区域。你可以看看我的 JVQmap 分支GitHub https://github.com/radzinzki/jqvmap/tree/3c0213c9a9b2e8480cc530514676e34ff42a6265。您要查看的文件是/jqvmap/maps/jquery.vmap.un_regions.js https://github.com/radzinzki/jqvmap/blob/3c0213c9a9b2e8480cc530514676e34ff42a6265/jqvmap/maps/jquery.vmap.un_regions.js.

我希望这有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义区域与 JQVmap 结合使用 的相关文章

  • Jest 中从未调用图像 onLoad 处理程序

    我正在尝试使用 Jest 测试将 dataUrl 加载到图像中 我正在使用 JSDOM 并按照说明添加resources usable 作为一个选项 如果我直接从 Node 运行该代码 则该代码可以工作 但是当我尝试在 Jest 中运行它时
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • Vue js按钮冻结dom

    我试图在按下按钮时切换包含加载动画的跨度 直到使用 v if 函数完成 但是当我按下按钮时 DOM 冻结并且 span 元素保持不变 直到函数调用结束 如何让 DOM 不冻结并显示加载图标 非阻塞按钮按下可能是一个解决方案 HTML
  • 将 FBX 文件转换为 .gltf 后,模型非常小,为什么?

    问题 将 FBX 文件转换为 gltf 后 模型非常小 为什么 我尝试用以下方法缩放模型frontObject scale set 1000 1000 1000 但我收到以下错误 TypeError Cannot read property
  • 使用 word_number 值对 javascript 数组进行排序

    如何对数组进行排序 var arr new Array word 12 word 59 word 17 这样我得到 word 12 word 17 word 59 Thanks 您需要编写一个排序方法 您可以编写任何您喜欢的方法 该方法在
  • RequireJS 不遵循设置了 baseUrl 的 data-main 的相对路径

    使用 requireJS 我尝试为我的数据主指定一个与 baseUrl 不同的路径 看来 requireJS 会忽略我在文件名之前输入的任何内容 并始终在 baseUrl 文件夹中查找该文件 我有以下文件夹结构 index html scr
  • TypeScript 中类和命名空间的区别

    到底有什么区别classes and namespaces在打字稿中 我知道 如果您创建一个带有静态方法的类 您可以在不实例化该类的情况下访问它们 这正是我猜想的命名空间的要点之一 我还知道你可以创建多个同名的命名空间 并且它们的方法在编译
  • 为什么新行上的 return 语句不返回任何值? [复制]

    这个问题在这里已经有答案了 考虑以下情况 function func1 return hello world function func2 return hello world console log func1 console log f
  • Ember.js 数组作为模型的属性

    干杯 我有一些模型 它的一个属性是一个数组 但由于某些原因 我在服务器上使用 mongoDB 并且它是嵌入式模型和 ember data 的问题 我不能做这样的事情 App Foo DS Model extend numbers DS ha
  • 将括号子集映射到字符

    我正在尝试创建一个 Scala 方法 该方法将采用一个父括号组 表示为字符串 然后将每个括号子组映射到不同的字母 然后它应该将它们放入它返回的映射中 所以基本上我调用以下方法 如下所示 val s 2 x 3 6 val map mapPa
  • AttachEvent 或 addEventListener - 存储在哪里?

    在 jQuery 中 如果我这样做 a click function Do something 点击事件存储在 a data events 我可以像这样获取它 jQuery each a data events function i eve
  • React.js this.props.data.map() 不是一个函数

    我正在搞乱反应并尝试解析和渲染 json 对象 现在 我只是使用硬编码对象设置它以进行测试 而不是从 ajax 调用中获取它
  • Django 模板变量从 {% for %} 循环到 Javascript

    这是一个迭代记录的 Django 模板 每条记录都包含一个由 JS 函数填充的 div 为了让 JS 知道要做什么 它需要从每次 for 循环迭代中获取一个变量并使用它 我不知道具体如何实现这一目标或是否可能 我不知道 也许记录在单独的 J
  • 从 UnityWebGL jslib 返回字符串

    我想使用 jslib 来获取网址参数 像这样的代码 jslib GetUrl function var s var strUrl window location search var getSearch strUrl split var g
  • 如何从普通 JavaScript 中的输入获取对象

    例如 我有 3 个输入
  • 如何在 Astro 中的组件之间共享状态?

    我相信我在代码中采用了错误的方法 如何在按钮单击中设置客户端首选项 该按钮单击用作全局 astro 组件中的道具 或者我应该怎么做 我知道这是可能的 因为 astro js 本身在他们的文档网站中这样做了 下面是我的尝试的解释 我目前正在开
  • 是否可以从 webpack 中的文件名中删除特殊字符?

    长话短说 我的资产文件名中不能包含某些字符 例如连字符 我没有运气通过解析 webpack 文档来弄清楚是否可以使用正则表达式或类似的东西重命名文件 这样我就可以从我无法控制源文件名的 3rd 方包中删除任何连字符 我的超级天真的例子是这样
  • 在64位环境中加载32位进程

    我有以下几个问题 CHM 是 编译的 HTML 文件 我的 CHM 文件有一个启动 32 位应用程序的链接 CHM 文件是用 Javascript 编码的 这在 32 位操作系统环境中运行良好 但这在 64 位操作系统环境中不起作用 原因是
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da
  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML

随机推荐

  • iOS 7 状态栏与 iOS 6 类似

    我有一个支持横向和纵向模式的应用程序 我需要像 iOS 6 一样的行为状态栏 最简单的方法是什么 我已经尝试过 Stack Overflow 问题中的解决方案iOS 7状态栏变回iOS 6风格 https stackoverflow com
  • 切换时区进行计算

    我们的应用程序将所有日期存储为 UTC 时区 然而 我们的主要业务部门位于 欧洲 柏林 时区 2 1 具体取决于夏令时 因此 当我们确定某个时间跨度应等于哪个 月 时 我们希望使用该时区 IE 开始时给出的时间段Thursday 31 Oc
  • 图像仅显示在最后一个 ListBoxItem 中

    这就是我正在构建的 每个 ListBoxItem 的右侧应该有 3 个图像 但正如您所看到的 它们只显示在最后一行 我使用的 ContentControl 引用了我从 SyncFusion Metro Studio 获取的 XAML 形状
  • 当在父级中禁用时,如何为子级自定义控件启用 ViewState?

    我正在尝试创建一个自定义控件 该控件类似于 gridview 控件 但专门用于实现某些自定义接口的业务对象 在这样做的过程中 我遇到了以下问题 我有一个已禁用视图状态的控件 并且我不想重新启用它 并且它有一个我希望启用视图状态的子控件 由于
  • Dapper 可以在 Mono 上运行吗?

    我们正在考虑搬到Mono http www mono project com我看到了Dapper http code google com p dapper dot net 与 MySql 一起使用 然而 这是 ADO NET 提供程序的情
  • cut() - 包括最低值

    我想使用定义的中断来剪切我的数据cut x c 10 10 cut x c 2 4 6 7 1
  • Flutter 底部导航栏颜色

    我正在尝试更改 BottomNavigation 图标的选定颜色 但我似乎所实现的只是更改文本颜色 请协助 Currently the text color changes to yellow when selected but the i
  • Sphinx 是否可以处理不能很好导入的代码?

    Sphinx 文档引擎能否成功生成导入不佳的项目的文档 特别是我的项目有一种奇异的依赖性 我不希望文档生成依赖于这种依赖性 Sphinx 是否需要导入我的模块并使用内省或解析 如果您使用 autodoc 扩展 那么您的项目必须是可导入的 但
  • Rails 4:after_update 回调导致无限循环

    我在我的用户模型中使用 after update 回调 模型用户 rb after update check phone check phone phone validation if phone changed end def phone
  • 如何解决 Buildship 中“缺少 Gradle 项目配置文件”问题?

    作为 Eclipse 用户 我一直喜欢 Gradle IDE 然而 这个插件现在已被弃用 取而代之的是新的 Buildship 插件 在安装了 Buildship 的全新 Eclipse IDE 后 我在所有 Gradle 项目中都遇到了以
  • yii2 select2 by kartik-v 设置默认值

    我有一个关于 yii2 kartik v widget select 2 的问题 该小部件附加到我视图中的一个字段
  • 将参数设置为 IN 表达式的列表

    每当我尝试将列表设置为参数以在 IN 表达式中使用时 我都会收到非法参数异常 互联网上的各种帖子似乎表明这是可能的 但这对我来说肯定不起作用 我正在使用 Glassfish V2 1 和 Toplink 有其他人能够让它发挥作用吗 如果可以
  • JavaScript Promise 在未被拒绝或解决时是否会造成内存泄漏?

    我所处的情况是 我需要 并行 执行异步函数 并继续以最佳结果执行程序 因此我写了这样的东西 var p for var i 0 i lt 10 i function index p push new Promise function res
  • 如何获取 DLL 内的函数列表(托管和非托管)?

    所以我玩了一个DLL UnityEditor dll 我想获得这个托管DLL中所有非托管函数的列表 dll可能由本机C 如果使用静态编译的库 核心和托管组成C 包装器全部包装到一个 dll 中 我想获取该 Dll 内所有非托管函数的列表 例
  • 标签点击事件

    我也尝试为一组动态创建的标签创建一个单击事件 如下所示 private void AddLBL Btn Click object sender EventArgs e int ListCount listBox1 Items Count i
  • 对 ImageView 进行着色在 Android 5.0 上不起作用。想法如何让它再次发挥作用?

    在我构建的应用程序中 我注意到运行新 Android Lollipop 的设备上的 ImageView 没有着色 这是曾经在旧版本操作系统上正常工作的代码
  • 如何在 CLion 中创建、编译和运行单个文件

    我正在研究一些c 我讨厌必须创建一个全新的项目才能在文件上运行一些东西 我也不喜欢在创建项目时如何调用文件main cpp 我只想制作一个包含一些函数或类的单个文件 创建整个项目还不够重要 我想创建一个文件并按我想要的名称命名 只需创建一个
  • 将字符串 ISO-8601 日期转换为 Oracle 的时间戳数据类型

    我有一个 VARCHAR2 类型的 ISO 8601 日期 如何将该字符串日期转换为 Oracle 数据库中的时间戳 日期示例 2014 09 12T11 53 06 00 00 也许类似于以下内容 但我不确定格式是什么 SELECT to
  • emacs 自动完成功能不适用于 jde

    我想在emacs中开发java 我安装了 ecb jde 和自动完成扩展 每个都可以很好地工作 无需启动其他 但是当我想一起使用它们时 出现了一些问题 auto complete mode 不会自动启动 jde 我需要通过 M x auto
  • 将自定义区域与 JQVmap 结合使用

    我正在使用 JQVmap https github com manifestinteractive jqvmap https github com manifestinteractive jqvmap 以输出站点上的地图 我不想将鼠标悬停在