Flash和XML实现电子地图查询及定位功能

上一讲,我们实现了电子地图中如何在线标注地名功能(参阅《Flash+ASP实现电子互动地图在线标注功能 》),本例我们一讲中我们学习实现按地名名称查询及定位功能。
  本例要实现的功能分成“查询”和“定位”两部分,查询功能通过调用XML文件的数据一一比对实现。定位功能通过将地图进行适当的缩放和移动,将被查询到的地名显示在窗口的中央位置来实现。
[1b]  制作步骤:[/1b]
  制作如图所示的界面;
[img]/Files/BeyondPic/2006-11/13/2006111310598121.jpg[/img]
图1 查询功能的界面
  用input_txt动态文本框接收输入的地名名称。用载入的外部文件XMLData.xml,依次将地名与input_txt.text比较,如果两个地名相符,取相对应的X、Y轴坐标值,将地图做相应的缩放及移动操作。在本例中地图将做放大50倍,同时将地图中心移动至被查询的地名。
  XMLData.xml的内容如下:
(略)……
金鼎辉煌世纪3748833882
文锦大厦3819433651
联城联合大厦3840233771
外贸轻工大厦3823332624
友联工业大厦1380243238
[1b]罗湖中学3722534520[/1b]
东莞外贸大厦3731433971
丽都大厦3744233995
东乐大厦3774633549
鸿昌广场3799633504
(略)……
  打开时间轴的动作面板,输入以下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");
//打开指定路径的xml文件
function XMLData() { //定义查询XMLData()函数
var input =_root.XMLData_mc.input_txt.text; //输入的地名名称
if (input=="") {_root.XMLData_mc.input_txt.text="请输入地名"}
//如果地名名称为空,重新要求输入地名
if (input!="请输入地名") { //如果正确输入地名
var childItems:Array = XMLData_xml.firstChild.childNodes;
for (var i=0; i
var sn= childItems[i].childNodes[0].childNodes[0].nodeValue ;
//读入xml文件中的地名
if (sn==input) { //如果输入与xml地名相符
var sx=childItems[i].childNodes[1].childNodes[0].nodeValue;
//读入xml文件中的x坐标
var sy=childItems[i].childNodes[2].childNodes[0].nodeValue;
//读入xml文件中的y坐标
_root.map_mc._xscale = _root.map_mc._yscale = 5000;
//地图增大为50倍
_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) { //当鼠标释放时
XMLData(); //调用“查询”函数
}
本文转自:http://www.5uflash.com/flashjiaocheng/Flashyuweb/1121.html

你可能感兴趣的:(flash技术,XML,Flash,ActionScript,ASP)