Flash+XML实现电子地图查询及定位功能
本例要實(shí)現(xiàn)的功能分成“查詢”和“定位”兩部分,查詢功能通過調(diào)用XML文件的數(shù)據(jù)一一比對(duì)實(shí)現(xiàn)。定位功能通過將地圖進(jìn)行適當(dāng)?shù)目s放和移動(dòng),將被查詢到的地名顯示在窗口的中央位置來實(shí)現(xiàn)。
制作步驟:
制作如圖所示的界面;
圖1 查詢功能的界面
用input_txt動(dòng)態(tài)文本框接收輸入的地名名稱。用載入的外部文件XMLData.xml,依次將地名與input_txt.text比較,如果兩個(gè)地名相符,取相對(duì)應(yīng)的X、Y軸坐標(biāo)值,將地圖做相應(yīng)的縮放及移動(dòng)操作。在本例中地圖將做放大50倍,同時(shí)將地圖中心移動(dòng)至被查詢的地名。
XMLData.xml的內(nèi)容如下:
(略)……
<r><n>金鼎輝煌世紀(jì)</n><x>37488</x><y>33882</y></r>
<r><n>文錦大廈</n><x>38194</x><y>33651</y></r>
<r><n>聯(lián)城聯(lián)合大廈</n><x>38402</x><y>33771</y></r>
<r><n>外貿(mào)輕工大廈</n><x>38233</x><y>32624</y></r>
<r><n>友聯(lián)工業(yè)大廈</n><x>13802</x><y>43238</y></r>
<r><n>羅湖中學(xué)</n><x>37225</x><y>34520</y></r>
<r><n>東莞外貿(mào)大廈</n><x>37314</x><y>33971</y></r>
<r><n>麗都大廈</n><x>37442</x><y>33995</y></r>
<r><n>東樂大廈</n><x>37746</x><y>33549</y></r>
<r><n>鴻昌廣場(chǎng)</n><x>37996</x><y>33504</y></r>
(略)……
打開時(shí)間軸的動(dòng)作面板,輸入以下ActionScript代碼:
input_text="請(qǐng)輸入地名"; //初始化輸入文本框
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()函數(shù)
var input =_root.XMLData_mc.input_txt.text; //輸入的地名名稱
if (input=="") {_root.XMLData_mc.input_txt.text="請(qǐng)輸入地名"}
//如果地名名稱為空,重新要求輸入地名
if (input!="請(qǐng)輸入地名") { //如果正確輸入地名
var childItems:Array = XMLData_xml.firstChild.childNodes;
for (var i=0; i <childItems.length; 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坐標(biāo)
var sy=childItems[i].childNodes[2].childNodes[0].nodeValue;
//讀入xml文件中的y坐標(biāo)
_root.map_mc._xscale = _root.map_mc._yscale = 5000;
//地圖增大為50倍
_root.map_mc._x = 412.5-50*(10000*sx/1086848-412.5);
//地圖中心點(diǎn)移至所查地點(diǎn)
_root.map_mc._y = 213-50*(10000*sy/1086848-213);
_root.map_mc.roadname01_mc._visible=0; //隱藏標(biāo)注地名
}
}
}
打開“查詢”按鈕的動(dòng)作面板,輸入以下ActionScript代碼:
on (release) { //當(dāng)鼠標(biāo)釋放時(shí)
XMLData(); //調(diào)用“查詢”函數(shù)
}
正式發(fā)布后,輸入“羅湖中學(xué)”,查詢到相對(duì)應(yīng)的代碼為“<r><n>羅湖中學(xué)</n><x>37225</x><y>34520</y></r>”,地圖自動(dòng)放大50倍,地圖中心移至(37225,34520)。效果如圖2所示;
圖2 查詢到地名,地圖做出相應(yīng)的縮放和移動(dòng)操作
至此,Flash電子地圖制作實(shí)例系列就結(jié)束了。當(dāng)然,電子地圖的功能還可以更加豐富,比如公交查詢、最佳路徑查詢、分類信息查詢等等。但縮放、移動(dòng)、標(biāo)注、測(cè)距和查詢是所有的電子地圖的基本的功能。只要掌握了這些基本功能的制作方法,就可以制作出比較合格的電子地圖。
總結(jié)
以上是生活随笔為你收集整理的Flash+XML实现电子地图查询及定位功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正确区分二维动画和三维动画的区别!
- 下一篇: 对于javaScript设计模式的认知与