[App Inventor 2] 空氣品質即時監測App範例「再」更新!

前一週我們才剛更新新書「App Inventor 2 資料庫專題特訓班」的專題:「空氣品質即時監測App」,沒想到這幾天又有讀者反應又無法正確執行了。我們回到環保署公開資料平台,發現最新公告:

pm25-005

天啊,老天為什麼要這樣折磨我 … 於是我們又進行範例的更新,說明如下:

可能是這個資料太夯,有太多人使用,目前環保署將空氣品質即時監測的資料以 json 及 xml 二種格式進行提供,雖然仍然可以讀到所有檢測站的資料,但是我們就不能篩選了。以下範例更新的動作,將把篩選的動作以程式來進行,大家可以參考相關拼塊:

更改資料接介網址

首先是新的 空氣品質即時污染指標 資料接介網址為:
http://opendata2.epa.gov.tw/AQX.json
但是重點是取回的 json 資料與原來不同,目前提供的資料就直接存成陣列,對於我們整理資料會相對簡單很多:

pm25-006

這是第一個要調整的地方,所以回到 App Inventor,將原來的網址修改為新的之後再更改取得 json 資料的方法;另外我們再宣告一個新的清單變數 alistuse,準備來儲存篩選後的資料。

pm25-001

增加篩選資料的程式

接著要新增一個自訂函式 createSelect,當由網路取得資料後,我們要使用這個函式來篩選資料進行顯示:

pm25-002

接著是 createSelect 的函式內容:首先將清單變數:alistuse 清空,接著判斷是否有使用 city 這個 Spinner 下拉式功能表選取城市,如果沒有就將 alistuse 內容填入 alist 清單,如果有就在 alist 清單中逐筆找尋資料的 County 欄位是否有等於 city 所選取的城市,如果有則加入 alistuse 清單中,完成後再使用 alistuse 清單資料進行以下的處理。

其他的拼塊要注意的是,當 city 這個 Spinner 選擇後要改為呼叫 createSelect 這個函數,而不是進行 Web 讀取。

另外其他拼塊中原來使用 alist 的清單資料,都要修改為 alistuse 清單資料,如此即可完成「空氣品質即時監測App」的修改。

心得

還是一樣:當您開發 App 時使用公開資料雖然在使用時很方便,但是因為資料來源不能操之在我,所以變數就相當多,一旦來源有變或是格式不同時,就可能造成程式在執行上的錯誤。這次的改變就是很好的例子,開發者可要時時注意資料來源的內容及完整性啊!

註:如果您購買了本書,您可以將書上的範例(.aia)原始檔寄到 david@e-happy.com.tw,說明要進行範例的更換,茶米即會將更改後的範例寄回到您的信箱,謝謝您的合作。

相關書籍

App Inventor 2資料庫專題特訓班
App Inventor 2資料庫專題特訓班
App Inventor 2專題特訓班
App Inventor 2專題特訓班
App Inventor 2初學特訓班
App Inventor 2初學特訓班
App Inventor 2零基礎入門班
App Inventor 2零基礎入門班

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *