8px;"> 3px;margin-right: 3px;">end — 9.5em;"> 8px;"> 2em;"> 9em;"onclick="getSubwayData()">Submit 0.6em;"> ¥ 50px;"value=0readonly> - 55px;"value=0readonly> km 2)station.js //菜单级联 functiongetStartStation(){ varstartLine=document.getElementById("startLine"); varstartStation=document.getElementById("startStation"); //获取1,2级菜单id varadd=[].concat(stationData[startLine.value]); startStation.length=0; //清空二级菜单 for(vari=0;i varstr=newOption(); str.text=add[i]; startStation.add(str); //text的值添加到二级select中 }; } functiongetEndStation(){ varendLine=document.getElementById("endLine"); varendStation=document.getElementById("endStation"); varadd=[].concat(stationData[endLine.value]); endStation.length=0; for(vari=0;i varstr=newOption(); str.text=add[i]; endStation.add(str); }; } functiongetSubwayData(){ varstartStation=document.getElementById("startStation"); varendStation=document.getElementById("endStation"); varfare=document.getElementById("fare") vardistance=document.getElementById("distance"); //获取当前select的元素,这里用到selectIndex属性 origin=startStation.options[startStation.selectedIndex].text; target=endStation.options[endStation.selectedIndex].text; /*if(origin==target){ fare.value="3"; distance.value="0"; }else{*/ distance.value=dijkstra.shortest(origin,target).toFixed (1); fare.value=caleFare(distance.value); //}; } //对传入的距离计算fare起步6公里内每人次3元,6-12公里每人次4元,12-32公里每10公里加1元,32公里以上每20公里加1元,票价不封顶 functioncaleFare(distance){ if(distance<=6)return3; if(distance<=12)return4; if(distance<=32)return4+Math.ceil((distance-12)/10); elsereturn6+Math.ceil((distance-32)/20) } //初始化算法 functioninitDijkstra(){ dijkstra.addChart(chartData); } initDijkstra();//初始化 3)dijkstra.js /* *2016.11.24nevil */ dijkstra=function(){ functionaddEdge(origin,target,distance){ if(! (origininchart))chart[origin]={}; if(! (targetinchart))chart[target]={}; chart[origin][target]=distance, chart[target][origin]=distance } functionaddChart(chart){ for(vari=0;i varedge=chart[i]; addEdge(edge[0],edge[1],edge[2]) }; } functionshortest(origin,target){ if(! (origininchart)||! (targetinchart))return1/0; vardist={}; visited={}; numVertex=0; for(varvinchart)dist[v]=1/0, numVertex++; dist[origin]=0; for(vari=0;i varminDist=1/0, minV=void0; for(varvindist)if(! (vinvisited)){ if(minDist>dist[v])minDist=dist[v], minV=v }else; if(void0===minV)break; if(minV===target)returnminDist; visited[minV]=true; varedges=chart[minV]; for(varvinedges)if(! (vinvisited)){ varnewDist=minDist+edges[v]; if(dist[v]>newDist)dist[v]=newDist }else; } return1/0 } varchart={}; return{ addEdge: addEdge, addChart: addChart, shortest: shortest } }(); 4)线路数据 varstationData={ "one": ["苹果园","古城","八角游乐园","八宝山","玉泉路","五棵松","万寿路","公主坟","军事博物馆","木樨地","南礼士路","复兴门","西单","天安门西","天安门东","王府井","东单","建国门","永安里","国贸","大望路","四惠","四惠东"], "two": ["西直门","车公庄","阜成门","复兴门","长椿街","宣武门","和平门","前门","崇文门","北京站","建国门","朝阳门","东四十条","东直门","雍和宫","安定门","鼓楼大街","积水潭"], "four": ["安河桥北","北宫门","西苑","圆明园","北大东门","中关村","海淀黄庄","人民大学","魏公村","国家图书馆","动物园","西直门","新街口","平安里","西四","灵境胡同","西单","宣武门","菜市口","陶然亭","北京南站","马家堡","角门西","公益西桥"], "five": ["宋家庄","刘家窑","蒲黄榆","天坛东门","磁器口","崇文门","东单","灯市口","东四","张自忠路","北新桥","雍和宫","和平里北桥","和平西桥","惠新西街南口","惠新西街北口","大屯路东","北苑路北","立水桥南","立水桥","天通苑南","天通苑","天通苑北"], "six": ["海淀五路居","慈寿寺","花园桥","白石桥南","车公庄西","车公庄","平安里","北海北","南锣鼓巷","东四","朝阳门","东大桥","呼家楼","金台路","十里堡","青年路","褡裢坡","黄渠","常营","草房","物资学院","通州北关","北运河西","郝家府","东夏园","潞城"], "seven": ["北京西站","湾子","达官营","广安门内","菜市口","虎坊桥","珠市口","桥湾","磁器口","广渠门内","广渠门外","九龙山","大郊亭","百子湾","化工","南楼梓庄","欢乐谷景区","双合","焦化厂"], "eight": ["朱辛庄","育知路","平西府","回龙观东大街","霍营","育新","西小口","永泰庄","林翠桥","森林公园南门","奥林匹克公园","奥体中心","北土城","安华桥","安德里北街","鼓楼大街","什刹海","南锣鼓巷"], "nine": ["郭公庄","丰台科技园","科怡路","丰台南路","丰台东大街","七里庄","六里桥","六里桥东","北京西站","军事博物馆","白堆子","白石桥南","国家图书馆"], "ten": ["巴沟","苏州街","海淀黄庄","知春里","知春路","西土城","牡丹园","健德门","北土城","安贞门","惠新西街南口","芍药居","太阳宫","三元桥","亮马桥","农业展览馆","团结湖","呼家楼","金台夕照","国贸","双井","劲松","潘家园","十里河","分钟寺","成寿寺","宋家庄","石榴庄","大红门","角门东","角门西","草桥","纪家庙","首经贸","丰台站","泥洼","西局","六里桥","莲花桥","公主坟","西钓鱼台","慈寿寺","车道沟","长春桥","火器营"], "thirteen": ["东直门","柳芳","光熙门","芍药居","望京西","北苑","立水桥","霍营","回龙观","龙泽","西二旗","上地","五道口","知春路","大钟寺","西直门"], "fourteen": ["张郭庄","园博园","大瓦窑","郭庄子","大井","七里庄","西局"], "fifteen": ["俸伯","顺义","石门","南发信","后沙 copyright@ 2008-2023 冰点文库 网站版权所有 经营许可证编号:鄂ICP备19020893号-2