上一講,我們實現了電子地圖中如何在線標注地名功能(參閱《Flash+ASP實現電子互動地圖在線標注功能?》),本例我們一講中我們學習實現按地名名稱查詢及定位功能。
本例要實現的功能分成“查詢”和“定位”兩部分,查詢功能通過調用XML文件的數據一一比對實現。定位功能通過將地圖進行適當的縮放和移動,將被查詢到的地名顯示在窗口的中央位置來實現。
[1b] 制作步驟:[/1b]
制作如圖所示的界面;

圖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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
