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