一、功能介绍:
JVectorMap是一个优秀的、兼容性强的jQuery地图插件。它可以工作在包括IE6在内的各款浏览器中,矢量图输出,除官方提供各国地图数据外,用户可以使用数据转换程序定制地图数据。
二、使用步骤:
1、首先要下载JVectorMap插件包。
下载地址:http://download.csdn.net/download/laoshanbizu/5488955
2、引入必需的文件,包括样式表、jQuery框架、jVectorMap库,中国地图数据库:
<link href="style/jquery.vector-map.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/jquery.vector-map.js"></script>
<script type="text/javascript" src="js/china-zh.js"></script><!—中国地区数据库-->
3、指定地图放置区域HTML标签:
<div id="container"></div>
4、编写JavaScript函数,实现所需功能:
<script type="text/javascript"> $(function() { /*id为中国省份标识符,name为对应省份名称,两者固定。event为活动情况, url为活动列表页面地址,数据可后台动态生成,这两项有活动的地区填写,无则留空。*/ var dataStatus = [ { id: 'HKG', name: '香港', event: '', url: '' }, { id: 'HAI', name: '海南', event: '', url: '' }, { id: 'YUN', name: '云南', event: '', url: '' }, { id: 'BEJ', name: '北京', event: '(3个活动)', url: '/event/1' }, { id: 'TAJ', name: '天津', event: '', url: '' }, { id: 'XIN', name: '新疆', event: '', url: '' }, { id: 'TIB', name: '西藏', event: '', url: '' }, { id: 'QIH', name: '青海', event: '', url: '' }, { id: 'GAN', name: '甘肃', event: '', url: '' }, { id: 'NMG', name: '内蒙古', event: '', url: '' }, { id: 'NXA', name: '宁夏', event: '', url: '' }, { id: 'SHX', name: '山西', event: '', url: '' }, { id: 'LIA', name: '辽宁', event: '', url: '' }, { id: 'JIL', name: '吉林', event: '', url: '' }, { id: 'HLJ', name: '黑龙江', event: '', url: '' }, { id: 'HEB', name: '河北', event: '', url: '' }, { id: 'SHD', name: '山东', event: '', url: '' }, { id: 'HEN', name: '河南', event: '', url: '' }, { id: 'SHA', name: '陕西', event: '', url: '' }, { id: 'SCH', name: '四川', event: '(1个活动)', url: '/event/2' }, { id: 'CHQ', name: '重庆', event: '', url: '' }, { id: 'HUB', name: '湖北', event: '(1个活动)', url: '/event/3' }, { id: 'ANH', name: '安徽', event: '', url: '' }, { id: 'JSU', name: '江苏', event: '', url: '' }, { id: 'SHH', name: '上海', event: '', url: '' }, { id: 'ZHJ', name: '浙江', event: '', url: '' }, { id: 'FUJ', name: '福建', event: '', url: '' }, { id: 'TAI', name: '台湾', event: '', url: '' }, { id: 'JXI', name: '江西', event: '', url: '' }, { id: 'HUN', name: '湖南', event: '', url: '' }, { id: 'GUI', name: '贵州', event: '', url: '' }, { id: 'GXI', name: '广西', event: '', url: '' }, { id: 'GUD', name: '广东', event: '', url: '' } ]; $('#map').vectorMap({ map: 'china_zh', backgroundColor: false, color: "#BBBBBB", hoverColor: false, //显示各地区名称和活动 onLabelShow: function (event, label, code) { $.each(dataStatus, function (i, items) { if (code == items.id) { label.html(items.name + items.event); } }); }, //鼠标移入省份区域,改变鼠标状态 onRegionOver: function(event, code){ $.each(dataStatus, function (i, items) { if ((code == items.id) && (items.event != '')) { $('#map').css({cursor:'pointer'}); } }); }, //鼠标移出省份区域,改回鼠标状态 onRegionOut: function(event, code){ $.each(dataStatus, function (i, items) { if ((code == items.id) && (items.event != '')) { $('#map').css({cursor:'auto'}); } }); }, //点击有活动的省份区域,打开对应活动列表页面 onRegionClick: function(event, code){ $.each(dataStatus, function (i, items) { if ((code == items.id) && (items.event != '')) { window.location.href = items.url; } }); } }); //改变有活动省份区域的颜色 $.each(dataStatus, function (i, items) { if (items.event != '') { var josnStr = "{" + items.id + ":'#00FF00'}"; $('#map').vectorMap('set', 'colors', eval('(' + josnStr + ')')); } }); }); </script> |
5、获取其他省份或地区的地图数据
可以用svg画图工具将需要的地图轮廓勾画出来,然后保存成svg格式的矢量图片,然后用nodepad++或xmlspy工具将svg文件打开,即可获取里面的地图数据。推荐工具:Inkscape
下载地址:http://download.csdn.net/download/laoshanbizu/5489111
当然,打开svg文件会看到有很多的数据,我们需要取的数据是以m开始,以z结尾的一串数字,然后将这串数字仿照china_zh.js文件组织成新的地图数据库。
举例:假如需要取北京市所有区和县的数据:
1)首先需要勾画出各个区县的轮廓图(svg格式);
2)然后从各个svg文件中取出地图数据,
3)对照着china_zh.js文件组织成新的地图数据库。
6、在地图中显示文字
从官网上下载的jvectormap插件中默认没有这个功能,你需要修改一下jquery.vector-map.js文件。
我的修改方式:
1)首先在VectorCanvas.prototype中添加一个新的函数,用来在地图的指定区域中绘制文字,代码如下:
createText: function(params) { var textNode; var tspanNode; if (this.mode == 'svg') { var xArea = params.x; var yArea = params.y; if(undefined != xArea && undefined != yArea && "" != xArea && "" != yArea ){ textNode = this.createSvgNode('text'); textNode.setAttribute('x', xArea); textNode.setAttribute('y', yArea); textNode.setAttribute('id', "text_"+params.name); textNode.setAttribute("style",params.style); tspanNode = this.createSvgNode('tspan'); $(tspanNode).text(params.name); $(tspanNode).appendTo(textNode); } } return textNode; } |
2)调用该函数:
var param = {name:mapData.pathes[key].name,x:mapData.pathes[key].x,y:mapData.pathes[key].y,style:textStyle}; var text = this.canvas.createText(param); $(this.rootGroup).append(text); |
其中param中需要包含的数据有需要显示的文字, x轴坐标值,y轴坐标值,样式(样式的具体内容,并非样式名称)。
这段代码,需要放在function WorldMap(param)中,也就是插件中var WorldMap = function(params){}内部,具体位置,可以参照cratePath的方式添加,上面那三句,并不是并列的三句,是需要放在不同位置的,具体的还是请参照createPath的添加方式。
3)对应的修改china_zh.js文件(可以参考beijing_2-zh.js)。
i)在height属性下面添加style属性,示例如下:
"style" :"font-size:6px;line-height:100%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:新宋体;z-index:5"
ii)在pathes中的子元素中添加 x,y坐标值,示例如下:
"x": "330.8695","y":"350.8071"
至此,文字便可以正常显示了,他可以随着地图的放大而放大,位置不会改变。
目前总结的就这么几点,如有新的体会,会继续添加。
附件中有个小例子,希望对大家有用
编写于2013年5月31日
相关推荐
jquery-jvectormap-cn-mill.js 中的台湾坐标。
JVectorMap 是一个优秀的、兼容性强的用来显示矢量地图的...使用 jVectorMap也很简单,和其他的jQuery方法相同;本人写了加载中国地图的例子,里面含有多个地图js文件,学习jVectorMap,建议学习下svg,更容易上手
1. **矢量地图**:jVectorMap使用SVG(Scalable Vector Graphics)技术,提供了高质量、可缩放的矢量地图。这意味着地图在任何分辨率下都能保持清晰,不会像位图那样出现像素化。 2. **多国和地区支持**:...
3. 绘制地图:使用jVectorMap的`addMap()`方法加载地图数据,然后通过`setValues()`或`setColors()`设置各区域的颜色,这通常与数据值关联,形成视觉上的差异。 4. 经纬度定位:jVectorMap支持基于经纬度的定位,...
jVectorMap是一个优秀的、兼容性强的jQuery地图插件。它可以工作在包括IE6在内的各款浏览器中,矢量图输出,除官方提供各国地图数据外,用户可以使用数据转换程序定制地图数据。
原始资源是从官网下载的jvectormap压缩包,但是回来用了之后发现里面关于世界地图这一块,鼠标放在中国上没有台湾.网上查解决办法,有一个js是中国地图修复缺失台湾,但是无法满足需求,就顺手改了一下.
通过掌握其基本使用方法和API,开发者可以轻松地创建出具有专业视觉效果和用户体验的地图应用。在"jQuery矢量SVG地图插件JVectorMap DEMO演示_files"中,你可以深入了解这个插件并动手实践,从而提升你的Web开发技能...
使用jQuery** 作为一款jQuery插件,jvectormap与jQuery库紧密集成,开发者可以通过熟悉的jQuery语法来调用和配置地图。这使得在网页项目中快速集成地图变得简单易行,降低了学习成本。 **3. 数据绑定与可视化** ...
它使用SVG(Scalable Vector Graphics)技术,允许用户在网页上展示清晰、可缩放的地图,并支持多种交互功能。jVectorMap与流行的jQuery库紧密集成,因此可以方便地与现有的jQuery应用进行整合。 1. **SVG矢量图...
JVectorMap官方文档没有台湾港澳地区,此处修复官方文档,并添加港澳地区,供大家参考试用,在网上找到过其他资源,使用发现台湾坐标不对,都飘到菲律宾南海那边了
在本项目中,我们将探讨如何使用jQuery插件jVectorMap来创建一个中国省份的区域地图。jVectorMap是一个流行的JavaScript库,它允许开发者轻松地在网页上绘制交互式的矢量地图。这个插件以SVG(可缩放矢量图形)格式...
JVectorMap是一款基于jQuery的矢量地图插件,它是基于SVG结构的,和其他jQuery地图插件不同的是,jVectorMap是矢量地图。同样支持地图缩放和地图平面移动等相应的功能。由于JVectorMap是基于jQuery的,所以支持大...
JVectorMap是一款基于jQuery的矢量地图插件,它是基于SVG结构的,和其他jQuery地图插件不同的是,jVectorMap是矢量地图。同样支持地图缩放和地图平面移动等相应的功能。由于JVectorMap是基于jQuery的,所以支持大...
通过使用JVectorMap,开发者可以利用jQuery的强大功能来实现地图上的交互,如点击地图区域触发特定的回调函数,或者在地图上添加标记或热点。 JVectorMap还支持多国和地区地图数据。它包含了世界地图,以及各个国家...
由于JVectorMap使用SVG,地图可以适应各种屏幕尺寸,无论是桌面还是移动设备,都能保持清晰度。 2. **jQuery集成** JVectorMap与jQuery库的结合使得地图的实现变得更加简单。开发者可以通过jQuery选择器和事件处理...
使用JVectorMap,开发者可以轻松创建具有交互性的地图应用,比如用于展示地理位置数据、用户分布、销售统计数据等。通过九段线的加入,这些应用可以更准确地反映中国的地理边界,尤其适用于教育、新闻报道和数据分析...
jVectorMap-土耳其 jVectorMap 土耳其地图插件 / jVectorMap 土耳其地图插件 #Javascript, #jQuery jVectorMap 页面: ://jvectormap.com 最初的灵感: : $ ( '#world-map' ) . vectorMap ( { map : 'turkey_1_...