周 霞,張 馳,車明亮,張季一,王英利,趙忠杰*
(1.蘇州信息職業(yè)技術(shù)學(xué)院 大數(shù)據(jù)與互聯(lián)網(wǎng)學(xué)院,江蘇 蘇州 215200;2.南通大學(xué) 地理科學(xué)學(xué)院,江蘇 南通 226007)
如今移動互聯(lián)網(wǎng)已成為人們?nèi)粘I钪斜夭豢缮俚闹匾獌?nèi)容,是未來網(wǎng)絡(luò)發(fā)展的核心和最重要的趨勢之一[1]。它是移動和互聯(lián)網(wǎng)融合的產(chǎn)物,繼承了移動通信隨時、隨地、隨身的特點以及互聯(lián)網(wǎng)開放、共享、互動的優(yōu)勢,繼而提供類型豐富、可交互、高品質(zhì)的信息服務(wù)[2]。微信是移動互聯(lián)網(wǎng)的重要組成部分。國內(nèi)電信運營商與微信的合作(如中國聯(lián)通與騰訊聯(lián)合推出的微信沃卡[3])促使基于微信的各種服務(wù)平臺井噴式增長。微信小程序作為新興技術(shù),在簡潔性和內(nèi)存占用方面比常規(guī)App(即原生應(yīng)用,Native App)更具優(yōu)勢,其減壓、減負式創(chuàng)新特點有助于用戶的推廣使用[4]。生活服務(wù)是微信的重要功能[5],但其主要面向購物、餐飲、外賣、旅游、影視、游戲等內(nèi)容[6],對具有公益性質(zhì)的公共衛(wèi)生間位置信息服務(wù)等內(nèi)容涉及較少。公共衛(wèi)生間作為生活服務(wù)中必不可少的重要內(nèi)容,其信息化建設(shè)不可忽視。通常人們在外出活動時,為了尋找就近的公共衛(wèi)生間,會使用高德、百度、騰訊等網(wǎng)絡(luò)地圖App進行搜索;但這些地圖App需要預(yù)先安裝、功能繁多、使用復(fù)雜,還有各種廣告信息和喜好推薦,使人們感到信息累贅。
目前存在少量針對公共衛(wèi)生間的應(yīng)用研究[7-9],也有研究利用混合型App架構(gòu),融合移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)設(shè)計智慧公共衛(wèi)生間平臺的概念性框架[10];但關(guān)于設(shè)計開發(fā)面向移動互聯(lián)網(wǎng)的公共衛(wèi)生間位置查詢平臺的研究則較少見,因此本文將通過設(shè)計微信平臺并開發(fā)小程序來實現(xiàn)公共衛(wèi)生間的信息化建設(shè),使人們可以迅速、便捷地查找所在位置周圍的公共衛(wèi)生間網(wǎng)點。
實現(xiàn)基于微信小程序的公共衛(wèi)生間查詢平臺,需要解決3個方面問題:①構(gòu)建基于微信小程序的公共衛(wèi)生間查詢平臺架構(gòu);②獲取基于第三方數(shù)據(jù)的公共衛(wèi)生間位置數(shù)據(jù);③搜索目標(biāo)衛(wèi)生間和路線選擇。本文將針對上述3個問題展開詳細闡述。
基于微信小程序的公共衛(wèi)生間查詢平臺架構(gòu)如圖1所示,包括前端和后端兩個部分,前端主要實現(xiàn)數(shù)據(jù)的表達以及與用戶的交互,后端主要涉及業(yè)務(wù)邏輯和數(shù)據(jù)交互。平臺采用的基本架構(gòu)為模型—視圖—視圖模型(MVVM)結(jié)構(gòu),包括數(shù)據(jù)模型(Model)、視圖(View)和視圖模型(ViewModel),是一種基于前端開發(fā)的架構(gòu)模式。其中,Model定義了數(shù)據(jù)修改和操作的業(yè)務(wù)邏輯,View負責(zé)將數(shù)據(jù)模型轉(zhuǎn)化為交互界面,ViewModel用于連接模型及其視圖。通過MVVM結(jié)構(gòu),View可通過事件綁定Model,Model可通過數(shù)據(jù)綁定View,利用ViewModel可實現(xiàn)數(shù)據(jù)與View的完全分離。
圖1 平臺架構(gòu)
在利用微信開發(fā)者工具開發(fā)小程序代碼時,前端架構(gòu)涉及的文件類型主要包括wxml文件、wxss文件和Javascript文件3種。在該框架中,界面由wxml文件描述(微信標(biāo)記語言)。它是微信框架提供的一套標(biāo)簽語言,用于編寫靜態(tài)頁面。在微信小程序框架中,官方提供了大量高頻率使用的組件,如基本視圖組件view、基本內(nèi)容組件text、多媒體組件image等。在前端架構(gòu)中,View和ViewModel實現(xiàn)了雙向數(shù)據(jù)綁定,使得ViewModel的狀態(tài)改變可自動傳遞給View。wxss文件是微信樣式表文件,用于設(shè)計頁面樣式。在微信小程序框架中,通過在全局樣式(app.wxss)文件和獨立頁面樣式文件編寫CSS樣式,以此設(shè)計頁面顯示風(fēng)格。Javascript文件為腳本文件,用于編寫組件行為和代碼邏輯,起到承上啟下的作用,既可用于前端用戶交互,又可調(diào)用后端服務(wù)。
后端架構(gòu)主要由Node.JS和Express框架構(gòu)成。Node.JS是基于Chrome V8引擎開發(fā)設(shè)計的Javascript運行環(huán)境。它采用事件驅(qū)動、非阻塞式I/O模型和事件驅(qū)動模型,使得其可并發(fā)處理許多鏈接,每個鏈接都會觸發(fā)一個回調(diào)函數(shù),整個過程中不會阻塞用戶請求。Express框架中包含一個數(shù)據(jù)庫模塊,是一個實現(xiàn)了MySQL協(xié)議的Node.JS運行環(huán)境的Javascript客戶端。借助Express框架,Node.JS可以有效地與數(shù)據(jù)庫(本文采用MySQL數(shù)據(jù)庫)進行交互,從而實現(xiàn)數(shù)據(jù)流轉(zhuǎn)。JSON文件在該架構(gòu)中起到了兩個作用:①作為靜態(tài)配置文件,實現(xiàn)開發(fā)者工具的個性化定制,如界面顏色、編譯配置等;②實現(xiàn)數(shù)據(jù)傳輸,保護前、后端的數(shù)據(jù)交互以及后端與數(shù)據(jù)庫的數(shù)據(jù)交互。
平臺的公共衛(wèi)生間位置數(shù)據(jù)主要來源于網(wǎng)絡(luò)地圖,通過調(diào)用網(wǎng)絡(luò)地圖提供的API,可獲取研究區(qū)內(nèi)公共衛(wèi)生間的位置數(shù)據(jù)。由于初次獲取的位置數(shù)據(jù)存在冗余,因此需進行去重處理。基于Node.JS,平臺通過Axios庫調(diào)用接口獲取位置數(shù)據(jù),并對獲取的數(shù)據(jù)進行去重處理。其關(guān)鍵代碼為:
在Node.JS的基礎(chǔ)上,對MySQL數(shù)據(jù)庫進行操作,將去重后的數(shù)據(jù)按照字段進行入庫,最終獲取的南通市公共衛(wèi)生間POI數(shù)據(jù)如圖2所示。
圖2 研究區(qū)POI數(shù)據(jù)空間分布圖
平臺的核心功能是查詢,需支持包括但不限于根據(jù)用戶當(dāng)前位置、用戶搜索位置、搜索半徑條件搜索周圍公共衛(wèi)生間。因此,關(guān)鍵需要實現(xiàn)以下3個功能。
1)公共衛(wèi)生間數(shù)據(jù)查詢。平臺采用小程序自帶封裝好的request函數(shù)對接口進行請求調(diào)用,實現(xiàn)對公共衛(wèi)生間數(shù)據(jù)的查詢。其關(guān)鍵代碼為:
2)檢索特定衛(wèi)生間。在搜索結(jié)果中選擇特定公共衛(wèi)生間是平臺的核心功能之一。當(dāng)用戶需要查看一個公共衛(wèi)生間時,通過點擊該公共衛(wèi)生間圖標(biāo),能在下方信息區(qū)域顯示公共衛(wèi)生間的位置以及用戶當(dāng)前位置到公共衛(wèi)生間的距離信息。用戶點擊公共衛(wèi)生間圖標(biāo)的函數(shù)代碼為:
3)步行路徑顯示和路徑分析。步行路徑顯示和路徑分析是平臺的核心功能之一。當(dāng)用戶點擊選擇公共衛(wèi)生間路線時,地圖中能顯示具體路線圖并在下方信息區(qū)域顯示從用戶當(dāng)前位置到公共衛(wèi)生間的步行路徑分析。路線規(guī)劃的關(guān)鍵代碼為:
通過上述方法,本文實現(xiàn)了基于微信小程序的南通市公共衛(wèi)生間查詢平臺。首先通過微信搜索平臺小程序標(biāo)識“NTWCSearch”進入小程序(也可掃二維碼進入),初始界面如圖3a所示;然后根據(jù)當(dāng)前位置按默認緩沖區(qū)半徑搜索公共衛(wèi)生間集合,并選擇其中某個公共衛(wèi)生間,可查看公共衛(wèi)生間的詳細信息,如圖3b所示;最后在頁面底端點擊路線按鈕,將在地圖中顯示步行路線,同時在信息區(qū)域顯示步行路徑分析,如圖3c所示。
圖3 平臺運行界面
本文利用微信開發(fā)者工具構(gòu)建了南通市公共衛(wèi)生間查詢平臺。首先采用MVVM模式構(gòu)建了系統(tǒng)的前端和后端,實現(xiàn)了前、后端交互以及數(shù)據(jù)庫的訪問框架;然后通過調(diào)用網(wǎng)絡(luò)地圖提供的API,獲取了公共衛(wèi)生間數(shù)據(jù);最后實現(xiàn)了公共衛(wèi)生間數(shù)據(jù)的查詢以及路徑規(guī)劃等功能。本文主要解決了公共衛(wèi)生間查詢平臺的關(guān)鍵技術(shù)問題,今后將對該平臺的相關(guān)功能進行完善。