`
snake_hand
  • 浏览: 624883 次
社区版块
存档分类
最新评论

用 Raphaël 绘制中国地图 + 显示数据

 
阅读更多

目录

  1. 前言
  2. 效果图
  3. 文件说明
  4. 修改内容
  5. 代码下载

前言

其实这个地图的脚本是我在网上找到,找了好多,发现这个用 Raphaël 绘制的地图功能最强,最好看,关键是兼容性也是最好的,支持所有浏览器,包括IE6

Raphaël 官网:http://raphaeljs.com/ 相当不错的画图插件,有兴趣的可以看看,支持IE6

地图演示地址:http://www.5imvc.com/Rep/Map

效果图

先来看看原版的显示效果

好看是好看,但是觉得怪怪的。。。就是没有省份的文字,这东西要是给别人用估计会被骂的,考我们地理知识呢?

说实话,我地理稀烂,上面除了湖北,上海,北京几个大城市,其他都不知道,哈哈,别喷我,还有就是,地图中的澳门,北京,上海太小了,很难点击

再来看看我修改后的效果图

 

文件说明

raphael.js --raphael的库,画图就靠这个了

chinamapPath.js -- 中国地图绘制

chinamap.js   --对绘制的地图增加事件和上色,绑定数据等操作

修改内容

我只是对 chinamap.js 文件做了一点修改

首先,获取每个区域的中心坐标

//***获取当前图形的中心坐标
var xx = st.getBBox().x + (st.getBBox().width / 2);
var yy = st.getBBox().y + (st.getBBox().height / 2);

然后通过raphael中 Paper.text(x, y, text) 方法将文字增加到每个区域中间

//***写入地名,并加点击事件,部分区域太小,增加对文字的点击事件
china[state]['text'] = R.text(xx, yy, china[state]['name']).attr(textAttr).click(function () {
    clickMap();
}).hover(function () {
    var $sl = $("#topList").find("[title='" + china[state]['name'] + "']:not([select])");
    $sl.css("font-size", "20px");
}, function () {
    var $sl = $("#topList").find("[title='" + china[state]['name'] + "']:not([select])");
    $sl.css("font-size", "");
});

有几个省份中心坐标不在内部,所以文字会跑出去,所以还得最部分坐标进行校正

//***修改部分地图文字偏移坐标
            switch (china[state]['name']) {
                case "江苏":
                    xx += 5;
                    yy -= 10;
                    break;
                case "河北":
                    xx -= 10;
                    yy += 20;
                    break;
                case "天津":
                    xx += 20;
                    yy += 10;
                    break;
                case "上海":
                    xx += 20;
                    break;
                case "广东":
                    yy -= 10;
                    break;
                case "澳门":
                    yy += 10;
                    break;
                case "香港":
                    xx += 20;
                    yy += 5;
                    break;
                case "甘肃":
                    xx -= 40;
                    yy -= 30;
                    break;
                case "陕西":
                    xx += 5;
                    yy += 20;
                    break;
                case "内蒙古":
                    xx -= 15;
                    yy += 65;
                    break;
                default:
            }
View Code

最后把数据传到前台让有数据的省区变色,用 china['湖北']['path'] 可以访问到当前raphael 的对象,使用变色方法显示就OK了

 周末一下发两篇文章,好累,休息去咯,喜欢的话求推荐哦,有问题欢迎讨论

代码下载

http://download.csdn.net/detail/linfei721/5502961

 

1
1
分享到:
评论

相关推荐

    用 Raphaël 绘制(修改版)

    总的来说,"用 Raphaël 绘制(修改版)"是一个利用Raphaël库开发的中国地图应用,它不仅展示了如何使用Raphaël创建矢量图形,还涵盖了数据处理、图形渲染、用户交互等多个方面,是学习Web图形编程和Raphaël库的好...

    Raphaël—JavaScript Library 绘制矢量

    **Raphaël JavaScript Library** 是一个强大的矢量图形库,专为Web开发设计,它允许开发者在网页上创建和操作SVG(Scalable Vector Graphics)和VML(Vector Markup Language)图形。这个库尤其适合那些需要在...

    Raphaël 用法 An Introduction to the Raphael JS Library

    Raphaël的出现,为开发者提供了在网页上绘制复杂图形的工具,而不必担心浏览器兼容性问题。 **一、Raphaël的基本结构和用法** 1. **引入库** 在HTML文件中,通过`<script>`标签引入Raphaël库。库文件通常命名...

    使用Raphaël.js实现心形函数

    在本篇文章中,我们将深入探讨如何使用Raphaël.js来实现一个心形函数。 首先,理解心形函数是至关重要的。心形图形通常可以通过数学方程来描绘,例如洛谷心形(Cardioid)可以用以下参数方程表示: x = a * (1 - ...

    利用raphael绘制浙江地图Svg,可动态轮循,信息提示Demo

    这些路径数据以`<path>`标签的形式存在于SVG文档中,Raphaël库能够解析这些数据并将其绘制在画布上。 接着,根据数值大小显示不同颜色深度是一项关键特性。这通常通过计算每个区域的颜色值实现,颜色可能对应于...

    raphael demo

    开发者可以通过调用Raphaël对象的方法,如`paper.circle()`, `paper.rect()`, `paper.path()`等,来绘制圆形、矩形、路径和其他形状。Raphaël还支持添加文本、图像、渐变、阴影等效果,以及动态变换和交互式功能。...

    raphael吉林省地图

    开发者通常会使用这些数据配合Raphaël库来动态渲染地图。 在实际应用中,Raphaël地图可以用于地理信息系统(GIS)、旅游导航、数据分析可视化等多种场景。例如,通过添加交互性,用户可以点击地图上的特定区域...

    raphael矢量图形库

    在实际项目中,Raphaël库非常适合创建数据可视化、交互式图表、游戏界面、地图等需要精细图形控制的场景。结合HTML5和其他JavaScript库,如jQuery或React,可以构建出富有创新性的Web应用。不过,需要注意的是,...

    raphael 柱图 chart

    使用Raphaël绘制柱状图,你需要掌握以下几个关键知识点: 1. **Raphaël的基本使用**: - 引入Raphaël库:首先,在HTML文件中通过`<script>`标签引入Raphaël库的JS文件。 - 创建画布:使用`Raphael paper`对象...

    raphael绘制可拖动控件

    在本文中,我们将深入探讨如何使用Raphaël JavaScript库来创建可拖动的SVG控件,并结合jQuery UI实现交互式功能。Raphaël是一个强大的JavaScript库,它允许开发者在网页上创建复杂的矢量图形,支持SVG和VML格式,...

    raphael绘制柱状图

    4. **绘制柱子**:遍历数据,对每个条目创建一个矩形(Raphaël的`rect`方法),设置其宽度、高度、x和y坐标。柱子的高度应与数据值成比例,而宽度则根据类别数量和画布宽度来确定。 5. **添加标签和图例**:为每个...

    raphael饼图

    在"raphael饼图"这个主题中,我们将深入探讨如何使用Raphaël库来创建交互式的饼图,这种图表通常用于展示数据的比例分布。饼图由一系列扇形部分组成,每个扇形代表数据集中的一个类别,其大小与该类别的比例成正比...

    初识raphael做饼图及折线图

    在Raphaël中,我们可以用路径元素(`path`)来绘制折线。我们需要指定x轴和y轴的坐标点,然后连接这些点形成折线。同时,为了增加可读性,可以添加网格线和轴标签。Raphaël提供了方便的函数如`Paper.path()`来创建...

    raphael动态绘制简单的图形.zip

    "raphael动态绘制简单的图形.zip"这个压缩包文件显然包含了使用Raphaël JavaScript库进行动态图形绘制的相关示例。Raphaël是一个流行的选择,因为它允许开发者在网页上创建矢量图形,这些图形可以在各种分辨率和...

    基于raphael的工作流svg

    接下来,我们将深入探讨这个主题,了解如何使用Raphaël和SVG进行工作流的可视化设计。 首先,SVG是一种XML标记语言,用于描述二维图形。由于其矢量特性,SVG图像可以无损地缩放,无论放大多少倍都能保持清晰。在...

    raphaelJS制作图表、饼图、柱状图、曲线图

    使用Raphaël绘制柱状图: - 创建x轴和y轴:定义轴的刻度和范围。 - 创建柱子:为每个数据点创建一个矩形,其位置和高度取决于数据值。 - 标签和标题:添加X轴和Y轴的标签,以及图表的标题。 - 交互元素:可选地...

    raphael web绘图工具

    在项目中,通常会使用`raphael.js`作为基础库,而`g.raphael.js`是Raphaël的扩展包,提供了更多的图形类型和图表功能,例如饼图、柱状图、线图等,适合用于数据可视化。 使用Raphaël时,开发者需要先引入这两个...

    eccplot:出于教育原因使用 HTML、JavaScript 和 Raphaël 绘制椭圆曲线

    该项目的目的是通过绘制椭圆曲线组成的点来帮助更好地理解这项技术。 此外,添加点的过程是可视化的。 作为一个教育项目, eccplot不打算为生产用例提供应用密码学。 所使用的技术栈由 HTML、JavaScript、CSS 和...

    raphael-min_js_

    《Raphaël图形绘制JS详解》 在Web开发领域,动态、丰富的图形展示是提升用户体验的重要手段之一。...无论是在数据可视化、地图绘制还是游戏开发中,Raphaël都能发挥重要作用,极大地丰富了Web应用程序的视觉体验。

    raphaeljs 炫丽 js特效

    在实际应用中,RaphaëlJS常用于地图应用、数据可视化、图表制作、游戏开发等领域。通过结合其他JavaScript库,如jQuery或AngularJS,可以进一步增强其功能和适用范围。 总的来说,RaphaëlJS是一个强大的工具,...

Global site tag (gtag.js) - Google Analytics