Flash+XML实现电子地图查询及定位功能
上一讲,我们实现了电子地图中如何在线标注地名功能(参阅《Flash+ASP实现电子互动地图在线标注功能》),本例我们一讲中我们学习实现按地名名称查询及定位功能。
Flash互动电子地图制作手册——入门实例 XML辅助Flash互动电子地图标注地名 用trace函数实现互动地图后台快速标注地名 Flash+ASP实现电子互动地图在线标注功能 Flash+XML实现电子地图查询及定位功能 |
本例要实现的功能分成“查询”和“定位”两部分,查询功能通过调用XML文件的数据一一比对实现。定位功能通过将地图进行适当的缩放和移动,将被查询到的地名显示在窗口的中央位置来实现。
制作步骤:
制作如图所示的界面;
图1 查询功能的界面
用input_txt动态文本框接收输入的地名名称。用载入的外部文件XMLData.xml,依次将地名与input_txt.text比较,如果两个地名相符,取相对应的X、Y轴坐标值,将地图做相应的缩放及移动操作。在本例中地图将做放大50倍,同时将地图中心移动至被查询的地名。
XMLData.xml的内容如下:
(略)…… |
打开时间轴的动作面板,输入以下ActionScript代码:
input_text="请输入地名"; //初始化输入文本框 var XMLData_xml:XML = new XML(); //装载外部XMLData_xml文件 XMLData_xml.ignoreWhite = true; //忽略空白 XMLData_xml.load("http://www.wanggesz.com/XMLData/XMLData.xml"); function XMLData() { //定义查询XMLData()函数 var input =_root.XMLData_mc.input_txt.text; //输入的地名名称 if (input=="") {_root.XMLData_mc.input_txt.text="请输入地名"} if (input!="请输入地名") { //如果正确输入地名 var sn= childItems[i].childNodes[0].childNodes[0].nodeValue ; var sx=childItems[i].childNodes[1].childNodes[0].nodeValue; var sy=childItems[i].childNodes[2].childNodes[0].nodeValue; _root.map_mc._xscale = _root.map_mc._yscale = 5000; _root.map_mc._x = 412.5-50*(10000*sx/1086848-412.5); _root.map_mc._y = 213-50*(10000*sy/1086848-213); _root.map_mc.roadname01_mc._visible=0; //隐藏标注地名 |
打开“查询”按钮的动作面板,输入以下ActionScript代码:
on (release) { //当鼠标释放时 |
正式发布后,输入“罗湖中学”,查询到相对应的代码为“<r><n>罗湖中学</n><x>37225</x><y>34520</y></r>”,地图自动放大50倍,地图中心移至(37225,34520)。效果如图2所示;
图2 查询到地名,地图做出相应的缩放和移动操作
至此,Flash电子地图制作实例系列就结束了。当然,电子地图的功能还可以更加丰富,比如公交查询、最佳路径查询、分类信息查询等等。但缩放、移动、标注、测距和查询是所有的电子地图的基本的功能。只要掌握了这些基本功能的制作方法,就可以制作出比较合格的电子地图。