前段时间,因为项目需要找了很多网上资源关于深圳地图的,都不太理想。于是整理了一份适用于项目的交互地图供大家参考,提供思路。里面有个805.svg的文件是引用了里面的path标签的坐标值,应用到chinamapPath.js里面替换,后期可以实现交互数据绑定。如果想换成地区交互地图,可以先让设计师提供.svg格式的矢量图形,然后取里面的坐标值即可。在使用过程中,大家可以集思广益,举一反三进行优化完善。初步模型,不够精致,学习共勉。

html代码参考:

<link rel="stylesheet" type="text/css" href="css/main.css"/>
<script type="text/javascript" src="raphael.js"></script>
<script type="text/javascript" src="chinamapPath.js"></script>
</head>

<body>
<div id="main">
   <div class="demo">
           <div id="map"></div>           
   </div>
</div>

<script type="text/javascript">
window.onload = function () {
    var R = Raphael("map", 805, 350);
    paintMap(R);
    var textAttr = {
        "fill": "#fff",//文字颜色
        "font-size": "12px",
        "cursor": "pointer"
    };
            
           
    for (var state in shenzhen) {
        shenzhen[state]['path'].color = Raphael.getColor(0.9);
                
        (function (st, state) {
            
            //获取当前图形的中心坐标
            var xx = st.getBBox().x + (st.getBBox().width / 2);
            var yy = st.getBBox().y + (st.getBBox().height / 2);
            
            //***修改部分地图文字偏移坐标
            switch (shenzhen[state]['name']) {
                case "龙华":
                    xx +=0;
                    yy -= 5;
                    break;
                case "宝安区":
                    xx -=70;
                    yy += 20;
                    break;
                case "南山区":
                    xx += 10;
                    yy += 10;
                    break;
               case "蛇口":
                    xx += -10;
                    yy += 0;
                    break;
                case "福田区":
                    xx -= 10;
                    break;
                case "罗湖区":
                    yy -= 10;
                    break;
                case "盐田区":
                    xx +=2;
                    yy -=5;
                    break;
                case "龙岗区":
                    xx += 5;
                    yy += 10;
                    break;
                case "坪大":
                    xx +=30;
                    yy -=30;
                    break;
                default:
            }
            //写入文字
            shenzhen[state]['text'] = R.text(xx, yy, shenzhen[state]['name']).attr(textAttr);
            
            st[0].onmouseover = function () {
                st.animate({fill: st.color, stroke: "#eee"}, 500);
                shenzhen[state]['text'].toFront();
                R.safari();
            };
            st[0].onmouseout = function () {
                st.animate({fill: "#4CC2EA", stroke: "#eee"}, 500);
                shenzhen[state]['text'].toFront();
                R.safari();
            };
                    
         })(shenzhen[state]['path'], state);
    }
}
</script>

</body>
</html>

chinamapPath.js文件的关键贴码:

shenzhen.longhua = {
        name: "龙华",
        path: R.path("M294.403,153.232l-13.585,9.622c0,0-3.396,2.52,4.964,12.601l-0.783,3.665l-4.702,6.872l1.566,5.729l-0.261,8.705l7.315,2.292l0.783,7.56c0,0,13.585,8.247,13.848,9.164c0.261,0.915-6.793,10.081-6.793,10.081l-3.135,0.457l-0.785,1.833l-7.576-0.458l-3.919,0.687h-2.351h-5.747h-6.794c0,0-6.27,0.915-7.053,1.146c-0.785,0.229-4.442,2.062-4.442,2.062l0.522-11.226l-1.045-1.145c0,0-0.783-4.123-0.783-5.27c0-1.146,0-2.29-0.785-2.29c-0.783,0-5.747,0-5.747,0s-8.622-5.957-6.792-13.289c1.829-7.331-13.063-8.706-14.892-8.934c-1.828-0.229-0.26-7.562-3.396-7.562s-12.019-1.374-12.802-1.374c-0.783,0-6.53,2.29-6.792-2.749c-0.263-5.04-2.875-6.643-2.875-6.643s6.271-4.813,6.792-7.332c0.523-2.521-0.783-9.164-4.441-9.622c-3.657-0.459,4.703-15.809,4.964-16.496c0.261-0.687,6.793-8.706,6.793-8.706l-3.918-6.414c0,0-1.307-5.956-0.262-6.645c1.044-0.687,8.098-5.727,8.098-5.727s9.667,4.353,10.451,5.956c0.783,1.604,5.486,0.688,5.486,0.688l3.135,3.894l6.794-0.458l1.305-0.688l0.786,2.52l0.783,2.291l2.612,1.375l-0.522,5.041l-0.783,1.833l-0.523,5.499c0,0,9.667,7.33,10.451,7.33s5.486,3.895,5.486,3.895s16.458-4.582,18.288-5.269C283.169,147.046,292.574,149.108,294.403,153.232z").attr(attr)
    };

.....完整案例的相关css文件和JS文件较多,可以移至资源下载目录进行下载。

div+css+js实现深圳交互地图相关推荐

  1. 下拉的DIV+CSS+JS二级树型菜单,刷新无影响

    二级菜单,不论展开几个栏目,刷新不影响! Code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  2. DIV+CSS+JS二级树型菜单,刷新无影响

    二级菜单,不论展开几个栏目,刷新不影响! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  3. html菜单树实现原理,HTML_DIV+CSS构成树型菜单,这是用DIV+CSS+JS构成的树型菜单 - phpStudy...

    DIV+CSS构成树型菜单 这是用DIV+CSS+JS构成的树型菜单,采用列表,符合WEB标准,在大多数WIN浏览器下,兼容性不错, xhtml见效果页,我现在做的是二个菜单,如果需要添加,可把 .. ...

  4. 大鱼海棠国漫主题HTML前端网页设计成品预览与讲解DIV CSS JS

    国漫大鱼海棠主题,本套大作业共计10个页面,页面美观度较高,网页在细节设计上花了很大功夫,如边框.阴影,鼠标滑过效果等,运用的知识点有:Div+CSS.JS轮播图.Table.下拉菜单栏.视频.表单. ...

  5. div+css+js 树形菜单

    2019独角兽企业重金招聘Python工程师标准>>> 代码: <div class="main_2">    <div class=" ...

  6. 效果直逼flash的Div+Css+Js菜单

    http://www.dzhai.com/blog/article.asp?id=153 <html> <head> <meta http-equiv="Con ...

  7. html 向上滚动 不间断,向上不间断滚动div+css+js模板

    div+css不间断向上滚动模板 上一次给大家介绍一种div css的不间断滚动代码JS特别多(不间断滚动css代码),这次给大家介绍的是比较实用比较简单的不间断css滚动代码 DIV+CSS不间断滚 ...

  8. 对用DIV+CSS+JS实现多子部门组织结构图的改进

    这是回复论坛一坛友的问题涉及到的. 因为我把广告从HOST里禁了,所以CSDN论坛里面回复时的编辑器其它功能都没了,只有一个简单的输入框.简洁不少,可是不仅不能发图片,而且打字也都反应很慢,比起博客编 ...

  9. HTML+CSS+JS实现 ❤️echarts省市区地图城市选择❤️

    效果演示: 代码目录: 主要代码实现: CSS样式: * {margin: 0;padding: 0; }body {font-family: Exo, '-apple-system', 'Open ...

  10. 一步步教你用html+div+css+js基于Jquery实现一套数字华容道游戏

    游戏分析 说起华容道游戏,可真的是经典游戏了,记得小时候有那种塑料的拼图板,能让人玩上一整天,有时候半天搞不定,光想给每个块块抠出来重新组上去,现在有电脑了,自己还是个从业多年的菜鸟程序员,是时候学习 ...

最新文章

  1. css3的3d起步——分享
  2. 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。...
  3. ubuntu下安装java和tomcat安装
  4. C# 每月第一天和最后一天
  5. Android 精品资源(一) 2018年3月23日 星期五
  6. .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
  7. python的userlist_Python Collections.UserList用法及代码示例
  8. 字符串匹配-kmp算法
  9. 机器学习中的偏差和方差理解
  10. 免费分享一套详细的Hadoop学习视频
  11. XPS10.1仿真PPC440步骤及遇到的问题
  12. 5种方式实现 Java 单例模式
  13. 用Arduino和蓝牙模块做一个开门装置
  14. 【CSS】537- 认真介绍 CSS 原理
  15. 【毕业设计】大数据淘宝用户行为数据分析与可视化 - flink
  16. python里使用协程和StreamReader、StreamWriter来创建echo服务端
  17. 【tkinter组件专栏】Scrollbar:横滚竖滚滚动条
  18. 使用 FFmpeg 开发播放器基础--使用 ffmpeg 解码视频文件
  19. Android盒子看百度云,【沙发管家】智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子!...
  20. java中的 | ^ 分别是什么?

热门文章

  1. JAVA的0x1b分隔符_hive 特殊分隔符 0X1B
  2. 9种常见的HR数据分析方法
  3. appium java模拟微信登录,使用Appium 测试微信小程序和微信公众号方法
  4. 如何制作一个简易的家庭记账系统
  5. Oracle“ ORA-12162:TNS:net服务名称指定不正确”错误和解决方案
  6. MapGIS 数据管理——数据管理与显示模型架构
  7. 介绍2个免费图片视频素材网站
  8. mysql数据库迁移工具_MysqlToMsSql(数据库迁移工具)
  9. MLA格式Secondary Source引用规范详解
  10. mongodb 下载