1、从数据库里读取信息数据库里需要存储的信息至少为:经纬度point,标注图片icon。读取后,创建点、标注。(注意:只是创建标注,并不添加到地图上。)//创建10个点var p1 = new BMap.Point(116.387452,39.947302);var p2 = new BMap.Point(116.361581,39.961129);var p3 = new BMap.Point(116.437901,39.960133);var p4 = new BMap.Point(116.459748,39.919528);var p5 = new BMap.Point(116.424247,39.939557);var p6 = new BMap.Point(116.485188,39.974511);var p7 = new BMap.Point(116.485188,39.974511);var p8 = new BMap.Point(116.494243,39.930484);var p9 = new BMap.Point(116.45328,39.884103);var p0 = new BMap.Point(116.456011,39.844671);//创建10张图标var icon1 = new BMap.Icon("img/1.jpg", new BMap.Size(50,50));var icon2 = new BMap.Icon("img/2.jpg", new BMap.Size(50,50));var icon3 = new BMap.Icon("img/3.jpg", new BMap.Size(50,50));var icon4 = new BMap.Icon("img/4.jpg", new BMap.Size(50,50));var icon5 = new BMap.Icon("img/5.jpg", new BMap.Size(50,50));var icon6 = new BMap.Icon("img/6.jpg", new BMap.Size(50,50));var icon7 = new BMap.Icon("img/7.jpg", new BMap.Size(50,50));var icon8 = new BMap.Icon("img/8.jpg", new BMap.Size(50,50));var icon9 = new BMap.Icon("img/9.jpg", new BMap.Size(50,50));var icon0 = new BMap.Icon("img/0.jpg", new BMap.Size(50,50));//创建10个marker,但不添加到地图上var m1 = new BMap.Marker(p1,{icon:icon1});var m2 = new BMap.Marker(p2,{icon:icon2});var m3 = new BMap.Marker(p3,{icon:icon3});var m4 = new BMap.Marker(p4,{icon:icon4});var m5 = new BMap.Marker(p5,{icon:icon5});var m6 = new BMap.Marker(p6,{icon:icon6});var m7 = new BMap.Marker(p7,{icon:icon7});var m8 = new BMap.Marker(p8,{icon:icon8});var m9 = new BMap.Marker(p9,{icon:icon9});var m0 = new BMap.Marker(p0,{icon:icon0});为了方便运算,用一个数组将标注集合起来://建立一个marker的数组var markers = [m1,m2,m3,m4,m5,m6,m7,m8,m9,m0,m11,m12,m13,m14,m15,m16,m17,m18,m19,m10,m21,m22,m23,m24,m25,m26,m27,m28,m29,m20];2、判断标注是否在可视区域内利用几何运算的LIB可以轻松判断,标注是否在可视区域内。几何运算LIB:
http://dev.baidu.com/wiki/map/index.php?title=MapLibrary
判断标注如果在可视区域内,则添加到地图上;如果标注不在可视区域内,则删除它。判断代码://显示可视区域内的标注function addMymarkers(){for(i=0;i<markers.length;i++){var result = BMapLib.GeoUtils.isPointInRect(markers[i].point, map.getBounds());if(result == true) map.addOverlay(markers[i]);else map.removeOverlay(markers[i]);}}3、将可视区域内的标注添加到地图上在图块加载完毕,地图中心点改变,和地图级别改变时,都需要进行一次添加/移除标注的操作。//对地图级别变化、移动结束和图块加载完毕后,进行添加marker的操作map.addEventListener("tilesloaded", addMymarkers);map.addEventListener("zoomend", addMymarkers);map.addEventListener("moveend", addMymarkers);4、给标注的区域画一个框为了方便观看,我用的是折线覆盖物,你也可以使用多边形覆盖物。//添加一个矩形覆盖物var polyline = new BMap.Polyline([new BMap.Point(116.279655,40.020499),new BMap.Point(116.260683,39.833259),new BMap.Point(116.532043,39.830599),new BMap.Point(116.526869,40.021383),new BMap.Point(116.279655,40.020499)], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});map.addOverlay(polyline);各方面要求不高的话,确实可以自己找底图再绘制上去。 如果是要用到公开场合,如公司宣传等商业用途没有通过审核的图是不能用的。 标注点位比较多、就需要找更高清晰度的底图,这些数据是不对个人用户开放的。 所以为了保证商业用图,一要合法性,二要美观度,还是会需要专业公司帮助完成。 参考案例:你可以去这里看看网页链接 请点击输入图片描述 湘图传媒官网
请问这种地图数据化怎么制作的?期待大神回答
一般是echarts,antv这种前端框架,因为比较好调节效果。复杂或者更精确的,非标准行政区划的图,又对最终效果不要求那么炫酷,可以用arcgis,supermap这种专业地图软件,最笨的方法是ps抠图,叠加
怎样做一个用地图统计数据
地图统计数据有很多啊,一般在线的数据分析工具都有这个功能,我经常用的BDP个人版里面就含有这些功能呢,我可以分享一些图片给你看,操作很简单 图片均来自BDP个人版~
6 浏览1938 2016-12-12
Excel 如何制作数据地图
关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1、绘制地图图形 + VBA宏语言 思路:用插入图形"任意多边形"绘制地图;每一个"任意多边形"赋予正确名称;对"任意多边形"赋值;利用VBA对"任意多边形"的值进行操作, 例如上色。 先准备一张所需要的地图图片,网上都有,可以下载,然后利用插入绘制多边形图片将地图中的区域描边,选定好的区域可以在左上角修改名称 将数据表中的数据和地图中的地区做关联,这里就要用到VBA了。 代码: [plain] view plain copy Sub ProvRefill() ActiveSheet.Shapes.Range(Array("shandong")).Select With Selection.ShapeRange.Fill .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorAccent1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = -0.5 .Transparency = 0 .Solid End With End Sub 这段代码是修改地图所选区域的颜色的,其他功能类似,懂VBA的会觉得简单,不懂的可以自行百度。 2、EXCEL插件集成 这类插件有很多,推荐Power Map for Excel 2013,安装好之后,选择数据区域,启动就行。 二类方案:其他软件 优势:地图已集成在内,可连接数据库,已有功能强大大数据量处理具有优势 缺点:自定义开发对人员水平要求较高,较困难 这一类软件一般是数据可视化的软件,能用到EXCEL数据源的,现在比较普遍的是报表工具和所谓商业智能大数据工具。 不多说,大家可能觉得陌生,那就直接上实例。 这里介绍FineReport(功能强大最实际的报表工具) 展示数据地图不在话下,关键有地图钻取功能。 所谓钻取就是:比如你点击山东省,进入山东省省地图,显示山东省各市的数据,数据的展示方式可以使用其他图表,比如条形图、气泡图等等。 1、 准备数据源 将excel的数据导入到这个报表设计器里,如果你的excel数据是取自于数据库的话,可以直接从设计器里读取数据库的数据。 2、 合并一片单元格,点击菜单栏中的插入>单元格元素>插入图表,选择地图,然后点击确定,如下图:(这里申明一下,这个软件类似于EXCEL,所以一些操作术语何以类比于EXCEL) 1、 选择地图类型,国家地图、省级地图还是其他云云,或者你有自定义的SVG地图也行。这里注意,地图的区域名要和区域数据字段的名字对应。 个人觉得钻取才是其亮点,所以这里一定要介绍一下。 钻取: 定义好地图的类型之后,就可以为地图定义数据来源了,选中地图,点击图表属性表-数据,进入数据设置面板,地图展现方式选择多层钻取,如下图: 钻取层级下有个中国的文件夹,双击即可打开查看中国下面的省份,选中中国文件夹,右击,则会跳出层级设置对话框。 要实现点击山东省能出现一张柱状图,这个其实是两张图表关联的,所谓“联动”。 联动:合并一片单元格,点击插入>单元格元素>插入图表,选择柱形图,点击确定即可添加一张柱形图。 柱形图的数据来源:(这里我都是直接用数据库的数据源) 在此,地图和柱形图都已经设置好了,如果要实现联动,需要在设置交互属性。 选中地图,在图表属性表中选择特效,点击交互属性,添加一个超级链接,即点击,添加一个图表超链-联动单元格。 到这里基本就完成了,感觉自己做得图有些low,别毁了人家名声,其实人家功能很强大,可视化很炫的。
- 相关评论
- 我要评论
-