jvectormap 缺失国家

6

我已经使用jvectormap几周了,但是有很多缺失的国家。请问有人知道在哪里可以获取jvectormap格式的国家信息吗?

我在谷歌上搜索了几个小时,但是没找到任何相关内容。

有一个jqvmap包含更多的国家,但它采用不同的投影方式,并且也有一些缺失的国家。

目前我正在使用:

jvectormap-world-en.js

我处理不了Python转换器。

有人有相关资料吗?


你对哪些缺失的国家感兴趣? - Mads Hansen
1
我对所有国家都感兴趣,这是问题所在。但这里有一些我知道的缺失国家:梵蒂冈城、摩纳哥、瑙鲁、图瓦卢、圣马力诺、列支敦士登、马绍尔群岛、圣基茨和尼维斯、马尔代夫、马耳他、格林纳达、圣文森特和格林纳丁斯、密克罗尼西亚、巴巴多斯、安提瓜和巴布达、塞舌尔、帕劳、安道尔、圣卢西亚、新加坡、基里巴斯、汤加、多米尼加、毛里求斯、巴林、圣多美和普林西比……还有所有没有列出来的国家。:-) 我需要一张完整的地图。 - Laokoon
对于未来发现此内容的任何人,我已经制作了一个包含微型国家的默认地图版本在这里,您可能会发现它很有用。 - matt
4个回答

8
您所面临的问题不仅仅是地图上缺少一些国家。如果您只是在地图上添加许多小型国家,则大部分国家在最高缩放级别下都无法看到。这个演示提出的解决方法是使用jVectorMap的标记功能来呈现较小的国家。
为了使数据方法正常工作,您需要为标记分配代码而不是索引。要做到这一点,只需在定义标记时使用哈希而不是数组即可:
//instead of this
markers: [
  {latLng: [41.90, 12.45], name: 'Vatican City'},
  {latLng: [43.73, 7.41], name: 'Monaco'},
  ...
]

//use this
markers: {
  "VA": {latLng: [41.90, 12.45], name: 'Vatican City'},
  "MC": {latLng: [43.73, 7.41], name: 'Monaco'},
  ...
}

我知道这个演示。我也试过使用它。但是我在后端有一些数据,其中给了我一些带有数字的ISO代码。现在我必须用一些新的填充来填充区域和标记。对于区域来说很容易:mo.series.regions[0].setValues(values); 但是对于标记,我该怎么做呢?因为标记不支持这个功能:mo.series.markers[0].setValues(values); - Laokoon
1
@Laokoon 请看编辑。关于地图的真实性,这总是在尺寸和细节数量之间做出权衡。网站上的地图是普通开发人员可以使用的东西。如果您需要特定的内容,可以使用转换器创建一个几MB大小的超详细地图。 - bjornd

4
您可以将以下行添加到jquery-jvectormap-world-mill.js文件中以补充一些缺失的国家。
    "BH":  {"path": "M548 215 L549 215 L549 216 L548 216 Z", "name": "Bahrain"},
    "MV":  {"path": "M622 291 L624 291 L624 293 L622 293 Z", "name": "Maldives"},
    "SC":  {"path": "M564 301 L566 301 L566 303 L564 303 Z", "name": "Seychelles"},
    "MU":  {"path": "M571 347 L573 347 L573 349 L571 349 Z", "name": "Mauritius"},
    "SG":  {"path": "M680 280 L682 280 L682 282 L680 282 Z", "name": "Singapore"},
    "PW":  {"path": "M779 260 L781 260 L781 262 L779 262 Z", "name": "Palau"}

1

最终我在维基媒体上找到了一个包含所有国家的矢量地图:

wikimedia.org


请问您能否解释一下如何使用这个SVG文件? - Wasim A.
你需要将SVG元素转换为对象。这并不难,因为每个国家都有自己的SVG元素和其中的正确名称。 - Laokoon
1
我向现有代码中添加了这一新行... "sp": { "path": "M103.97,1.331L103.82,1.265L103.65,1.326L103.705,1.423L103.818,1.447L103.909,1.416L103.961,1.392L103.996,1.365L103.97,1.331z", "name": "新加坡" }, - Wasim A.
1
@WasimA。你的文件中有语法错误,请将"pathes"替换为"paths"。然后地图就能加载了。 - Arek Kostrzeba

1

兄弟,我刚刚从上面的gist中复制了代码到jquery-jvectormap-world-mill.js文件中,但是我遇到了Uncaught Error: Attempt to use map which was not loaded: world_mill错误。这里可能出了什么问题? - s.khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接