王海穎++樓鋮超++張鵬
摘 要 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,移動端校園信息化產(chǎn)品是高校信息化發(fā)展的必然趨勢。本文從數(shù)字化校園建設(shè)及應(yīng)用群體的需求出發(fā),通過Web APP調(diào)用百度地圖API方式,設(shè)計了一款校園地理信息系統(tǒng)——“掌上紡服”。
【關(guān)鍵詞】Web APP 百度地圖AngularJS Ajax
1 引言
數(shù)字校園是高校信息化發(fā)展的必然趨勢,通過數(shù)字校園建設(shè),可以快速有效地獲得大量校園信息,并實現(xiàn)信息之間的交互共享。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)網(wǎng)絡(luò)傳輸更加快捷,移動終端設(shè)備迅速普及。當(dāng)前運用移動端人均上網(wǎng)時間已經(jīng)超過PC端,應(yīng)用程序研發(fā)重心也正由傳統(tǒng)的PC平臺向智能終端平臺傾斜??梢?,智能終端的發(fā)展正在逐步影響高校數(shù)字化建設(shè)的方式。本文根據(jù)數(shù)字化校園建設(shè)及應(yīng)用群體的需求分析,設(shè)計并實現(xiàn)了一款基于Web APP的校園地理信息系統(tǒng)——“掌上紡服”。
2 校園地理信息系統(tǒng)設(shè)計
鑒于當(dāng)前存在很多新生因為不熟悉地理環(huán)境而導(dǎo)致走錯教室、上課遲到等現(xiàn)象,在當(dāng)前新生擁有智能手機(jī)比例已經(jīng)達(dá)到90%以上的今天,為方便學(xué)生盡快熟悉校園地理、盡快適應(yīng)校園生活,設(shè)計一款能通過智能手機(jī)方便操作的校園地理信息系統(tǒng)。
Web APP,是運行于網(wǎng)絡(luò)和標(biāo)準(zhǔn)瀏覽器上,基于網(wǎng)頁技術(shù)開發(fā)實現(xiàn)特定功能的應(yīng)用,該開發(fā)具有跨平臺的優(yōu)勢,編寫一次、可到處運行的移動開發(fā)方法構(gòu)建的跨平臺移動應(yīng)用程序可以在多個設(shè)備上運行。為了更好的推廣應(yīng)用,選用了Web APP方式進(jìn)行開發(fā),用戶只需要輸入網(wǎng)址或者掃面二維碼就能夠簡單方便地使用,同時Web APP的自適應(yīng)性能夠很好的適應(yīng)不同分辨率的手機(jī)屏幕。
2.1 相關(guān)技術(shù)簡介
2.1.1 百度地圖API
百度地圖API是為開發(fā)者免費提供的一套基于百度地圖服務(wù)的應(yīng)用接口,包括JavaScript API、Web服務(wù)API、Android SDK、iOS SDK、定位SDK、車聯(lián)網(wǎng)API、LBS云等多種開發(fā)工具與服務(wù)。其中百度地圖JavaScript API是一套由JavaScript語言編寫的應(yīng)用程序接口,不僅包含構(gòu)建地圖的基本功能接口,還提供了諸如本地搜索、路線規(guī)劃等數(shù)據(jù)服務(wù)。適用于PC或移動設(shè)備端的基于瀏覽器的開發(fā)。
2.1.2 AngularJS
AngularJS是一款由Google公司開發(fā)的前端JS框架。AngularJS支持單頁動態(tài)應(yīng)用程序的開發(fā),簡化了開發(fā)過程及測試的復(fù)雜度,在編寫 Web APP的過程中可以實時看到代碼產(chǎn)生的效果。AngularJS的核心思想是將管理數(shù)據(jù)的代碼(model)、應(yīng)用邏輯代碼(controller),以及向用戶展示數(shù)據(jù)的代碼(view)清晰地分離開,實現(xiàn)View層與model層數(shù)據(jù)同步,一方的改變會影響另一方。
2.1.3 AJAX(Asynchronous JavaScirpt and XML)
是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù),整合了幾種現(xiàn)有的技術(shù):JavaScirpt、CSS、DOM和XmlHttpRequest。jQuery是一個輕量級的Ajax框架,對Ajax操作進(jìn)行了良好的封裝,提供了一套完整的Ajax功能,使Ajax應(yīng)用開發(fā)過程簡單化。同時在無刷新技術(shù)實現(xiàn)上引入jQuery很多優(yōu)勢。
2.2 系統(tǒng)框架設(shè)計
“掌上紡服”校園地理信息系統(tǒng)的設(shè)計原則為:在實現(xiàn)客戶端簡潔、易操作的同時,盡量減少響應(yīng)時間、占用較小的帶寬。
基于上述設(shè)計原則,前端采用AngularJS框架實現(xiàn)單頁應(yīng)用,服務(wù)器端采用SSH框架來實現(xiàn),而前端與服務(wù)器端之間的交互通過JSON數(shù)據(jù)來實現(xiàn)。JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交互格式,簡單,易于讀寫,占用帶寬小,服務(wù)器端和客戶端的解析較為方便。系統(tǒng)的整體設(shè)計框架如圖1所示。
3 主要功能實現(xiàn)
3.1 初始化百度地圖
百度地圖JavaScript API是一套由JavaScript語言編寫的應(yīng)用程序接口,通過
地圖容器設(shè)置:
創(chuàng)建Map實例,初始化地圖:
var map=new BMap.Map("allmap", { enableMapClick : false }); // 創(chuàng)建Map實例
map.centerAndZoom(CurrentPoint, 18); // 初始化地圖,設(shè)置中心點坐標(biāo)和地圖級別
3.2 單頁應(yīng)用架構(gòu)
傳統(tǒng)的網(wǎng)頁,頁面加載時會重繪整張頁面,當(dāng)瀏覽器從服務(wù)器獲取數(shù)據(jù)時,頁面會假死并有“閃爍”現(xiàn)象。單頁應(yīng)用頁面加載時只重繪界面上需要變化的部分,擁有和Native APP一樣的響應(yīng)速度。
AngularJS的單頁應(yīng)用執(zhí)行流程如圖2所示。
在應(yīng)用執(zhí)行過程中,完整的頁面只加載一次,就是“ng-APP”所在的頁面。對于客戶端的請求,頁面只是重繪“ng-APP”中的內(nèi)容。
主頁(index.jsp)中“ng-APP”的設(shè)置:
路由規(guī)則設(shè)置:
var APP = angular.module(zjff, [ ng, ngRoute, ngAnimate ]);
APP.config(function($routeProvider) {
$routeProvider.when(/main, {templateUrl : main.jsp,controller : mainCtr})
});
控制器:
APP.controller(mainCtr, function($scope, $location) {
createMap();//初始化地圖
});
3.3 無刷新查詢
$watch是AngularJs的scope函數(shù),用于監(jiān)聽查詢關(guān)鍵字的變化。jQuery是一個輕量級的Ajax框架,對Ajax操作進(jìn)行了良好的封裝。當(dāng)查詢關(guān)鍵字變化時通過jQuery的$.getJSON()方法向服務(wù)器發(fā)送請求,異步查詢。查詢結(jié)果返回后通過$scope.geotableList = data; $scope.$APPly();重新綁定數(shù)據(jù),顯示最新查詢結(jié)果。
$scope.$watch(kw, function() {
if ($scope.kw) {
$.getJSON(geotableByKw.action?kw= + $scope.kw,
function(data) {
$scope.geotableList = data;
}
});
3.4 步行規(guī)劃
步行路線規(guī)劃功能通過調(diào)用百度API實現(xiàn)
創(chuàng)建一個步行導(dǎo)航實例:
var walking = new BMap.WalkingRoute(map, {renderOptions : {map : map, panel : "r-result",autoViewport : true} });
發(fā)起檢索,變量CurrentPoint是當(dāng)前位置,p1是目標(biāo)位置:
walking.search(CurrentPoint, new BMap.Point(p1.getPosition().lng,p1.getPosition().lat));
通過第三方地圖控件控制規(guī)劃面板的顯示與隱藏
var div = document.createElement("div");// 創(chuàng)建一個DOM元素
div.onclick = function(e) {
$("#r-result").toggle("normal");//控件綁定顯示/隱藏事件
}
map.getContainer().APPendChild(div);//將控件添加到地圖容器中
4 結(jié)束語
本文在當(dāng)前互聯(lián)網(wǎng)技術(shù)水平和智能手機(jī)普及率均較高的應(yīng)用背景下,提出了基于Web APP的校園地理信息系統(tǒng)的設(shè)計與實現(xiàn)。Web APP前端采用AngularJS實現(xiàn)單頁應(yīng)用,服務(wù)器端采用SSH框架,前端與服務(wù)端之間通過JSON數(shù)據(jù)實現(xiàn)交互,凸顯了本款Web APP 簡潔、易操作、響應(yīng)速度快的特點,更易于推廣。
參考文獻(xiàn)
[1]劉玉萍.HTML5從零開始學(xué)[M].北京:清華大學(xué)出版社,2015.
[2]孫迪,李沛鴻.百度地圖在WebGIS中的應(yīng)用[J].交通與建筑科學(xué),2013(11):165-166.
[3]董英茹.簡談AngularJS在下一代Web開發(fā)中的應(yīng)用[J].軟件工程師,2015(05):30-31.
[4]張佳佳,王楊,韓力英.基于SSH+jQuery框架的餐飲Web APP的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2016(03):20-22.
作者簡介
王海穎(1982-),女,浙江省寧波市人。碩士學(xué)位?,F(xiàn)為浙江紡織服裝職業(yè)技術(shù)學(xué)院講師。主要研究方向移動端軟件開發(fā)。
樓鋮超(1995-),男,浙江省寧波市人?,F(xiàn)為浙江紡織服裝職業(yè)技術(shù)學(xué)院在讀。主要研究方向軟件開發(fā)。
張鵬(1996-),男,浙江省溫州市人?,F(xiàn)為浙江紡織服裝職業(yè)技術(shù)學(xué)院在讀。主要研究方向軟件開發(fā)。
作者單位
浙江紡織服裝職業(yè)技術(shù)學(xué)院 浙江省寧波市 315211