生成地铁线路图的jQuery插件 - Subway Map Visualization

12年前
生成地铁线路图的jQuery插件 - Subway Map Visualization


【下载地址】---》 subwayMap_Plugin_0.5.0.zip 

【应用范围】

       1、铁路、公路、飞机等线路图的设计,图形化显示;

       2、电子电路设计图;

       3、社交群显示、网络图、办公路线等等;

       4、你的想象有多么丰富就有多少应用~~~

【使用体验】

首先,像其他的jQuery插件一样添加jQuery库和插件的Js库。

<script src="res/newjs/jquery-1.2.6.js" type="text/javascript"></script>
<script src="res/newjs/index_new.js?v=20101208"  type="text/javascript"></script>

然后定义我们的画布DIV

<div id = “subway_canvas”></div>

使用jquery选择器让我们的铁路图生效~

$(“#subway_canvas”) .subwayMap({ debug: true });

参数说明:debug:[true|false] 调试模式  打开时可以在JS控制台显示调试信息;

 

 

下面看看线路节点是怎么设置的:

通过Demo可以知道,这是典型的导航型插件,通过UL和LI标签定义节点。而<canvas>则可以设置背景等信 息,<canvas>是使用网格布局;而不同的地图可以在一个网格上重叠,只要使用不同的UL标签标识就OK。看一看都有哪些信息可以设置:

Canvas参数说明:

(DIV)data-columns:<canvas>的网格列数;

(DIV)data-rows:<canvas>的网格行数;

(DIV)data-cellSize:每个网格的大小,大小为像素;整个<canvas>的大小=data_colums*data-cellSize-data_rows*data-cellSize;

(DIV)data-legendId:地图的图例位置,输入的是一个<div>的id;

(DIV)data-textClass:地图节点的文字样式;

(DIV)data-gridNumbers:是否显示网格的行列数;

(DIV)data-grid:是否显示网格;

(DIV)data-lineWidth:地图路线的宽度,像素值;

 

 

了解了这些,我们就可以开始我们的地图绘制了,

先画一个点吧:

<ul data-color="#ff4db2" data-label="jQuery Widgets">         

<li data-coords="2,2" data-labelPos="N"><a href="http://jqueryui.com/demos/accordion/">Accordion</a></li>

<li data-coords="2,2" data-labelPos="S"><a href="http://jqueryui.com/demos/accordion/">Accordion</a></li>   

</ul>

Canvas参数说明:

(UL)data-color:表示该线路的颜色;

(UL)data-label:该线路唯一的ID标识,也是图例显示的名称;

(LI)data-coords:该点的坐标,可以为浮点数;

(LI)data-labelPos:该点名称的显示位置,可以为N, E, S, W, NE, NW, SE, SW,默认为S;

 

 

这样我就可以很简单的画出了一条直线和两个点~~下面做一个比较完整的路线:

        <ul data-color="#ff4db2" data-label="jQuery Widgets" data-shiftCoords="0,1">          <li data-coords="2,2" data-marker="interchange"><a href="http://jqueryui.com/demos/accordion/">Accordion</a></li>          <li data-coords="4,2"><a href="http://jqueryui.com/demos/autocomplete/">Auto\ncomplete</a></li>          <li data-coords="5,3" data-dir="E"></li>          <li data-coords="5,7" data-marker="@station" data-labelPos="W">Slider</li> <!-- marker-only node -->          <li data-coords="6,4" data-dir="S" data-marker="interchange" data-markerInfo="h5">Date\npicker</li>          <li data-coords="7,4"></li>          <li data-coords="7.15,8" data-marker="@station" data-labelPos="E">Dialog</li>  <!-- marker-only node, moved to the right by 0.15 -->          <li data-coords="8,3" data-dir="E"></li>          <li data-coords="8,2"></li>          <li data-coords="9,1" data-dir="N"></li>          <li data-coords="10,2" data-dir="E" data-marker="interchange" data-labelPos="E">Button</li>          <li data-coords="10,5"></li>          <li data-coords="9,6" data-dir="S" data-marker="station">Progress\nbar</li>          <li data-coords="6,9"></li>          <li data-coords="5,8" data-dir="W"></li>          <li data-coords="5,7"></li>          <li data-coords="4,6" data-dir="N"></li>          <li data-coords="2,6">Tabs</li>          </ul>

Canvas参数说明:

(UL)data-shiftCoords:地图路线偏离原来的位置的大小,是一个x,y值对,可以为负数,正数代表向右向下移动;

(li)data-marker:地图上的地点表示,可以为”station” 和” interchange”,如果表示的地点不在连续的线路上,可以使用”@station”或者”@interchange”表示;

(li)data-dir:为了实现地图的圆滑的效果,可以使用拐角效果,该属性值可以为N,S,W,W表示拐角的方向;

(li)data-markerInfo:地图标志信息,表示地图的上的连接点,可以是两个不同的路线,也可以是同一条路线,属性值为[v|h]+数值,v表示垂直方向,h表示水平方向,数值为像素,表示延伸的长度;

 

最后写一个比较完整的地图:

<ul data-color="#ff4db2" data-label="jQuery Widgets">  <li data-coords="2,2" data-marker="interchange"><a href="http://jqueryui.com/demos/accordion/">Accordion</a></li>  <li data-coords="4,2"><a href="http://jqueryui.com/demos/autocomplete/">Auto\ncomplete</a></li>  <li data-coords="5,3" data-dir="E"></li>  <li data-coords="5,7" data-marker="@station" data-labelPos="W">Slider</li> <!-- marker-only node -->  <li data-coords="6,4" data-dir="S" data-marker="interchange" data-markerInfo="h5">Date\npicker</li>  <li data-coords="7,4"></li>  <li data-coords="7.15,8" data-marker="@station" data-labelPos="E">Dialog</li>  <!-- marker-only node, moved to the right by 0.15 -->  <li data-coords="8,3" data-dir="E"></li>  <li data-coords="8,2"></li>  <li data-coords="9,1" data-dir="N"></li>  <li data-coords="10,2" data-dir="E" data-marker="interchange" data-labelPos="E">Button</li>  <li data-coords="10,5"></li>  <li data-coords="9,6" data-dir="S" data-marker="station">Progress\nbar</li>  <li data-coords="6,9"></li>  <li data-coords="5,8" data-dir="W"></li>  <li data-coords="5,7"></li>  <li data-coords="4,6" data-dir="N"></li>  <li data-coords="2,6">Tabs</li>  </ul>     <ul data-color="#00ff00" data-label="jQuery Interactions" data-shiftCoords="0,-1">  <li data-coords="2,6"></li>  <li data-coords="2,5.9" data-marker="@interchange"> </li> <!-- marker-only node, moved up by 0.10 -->  <li data-coords="5,6" data-marker="@station" data-labelPos="N">Selectable</li>  <li data-coords="6,6"></li>  <li data-coords="7,3" data-marker="@station" data-labelPos="W">Resizeable</li>  <li data-coords="7,5" data-dir="E" data-marker="station" data-labelPos="E">Droppable</li>  <li data-coords="7,1" data-marker="interchange" data-labelPos="W">Draggable</li>  </ul>

 

【体验心得】

一个GreatTool,实现的效果很好,如果能够通过模版技术从后台直接读取存储好的数据,自动生成坐标点,或者通过Json数据设置坐标,那就 更好;另外,可以通过设计反向程序,把设计图转化成数据存储在数据库中,会非常棒。一个高级的jQuery插件,但是使用方法十分简单。