gpt4 book ai didi

javascript - 在 JQVmap 中使用自定义区域

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:44 25 4
gpt4 key购买 nike

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

最佳答案

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

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

第一步。

这是我定义区域的方式。

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...

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

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;
}
}
}
}

第二步

高亮/取消高亮区域的辅助方法:

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);
}

第 3 步。

将辅助方法注册到 map 的悬停事件中。

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);

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

我的项目需要的区域是联合国定义的区域。您可以在 GitHub 上查看我的 JVQmap 分支。 .您要查看的文件是 /jqvmap/maps/jquery.vmap.un_regions.js .

希望对您有所帮助!

关于javascript - 在 JQVmap 中使用自定义区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com