关于手机天气应用中的城市搜索的联想查找方式优化
---- 作者:Meiq.lin
筆者近期在開發一款品牌手機上預裝的天氣類應用,開發過程中對于城市查詢的聯想查找方式有些優化,寫下來供自己及有需要的人士參考。
AccuWeather簡介
AccuWeather氣象預報公司是在1962年由知名氣象學教授麥爾斯(Joel Myers)所創。該公司成為
業界先驅,為知名媒體、能源公司、滑雪場等顧客,量身訂做他們需要的氣象預報數據。?
長期以來,AccuWeather是全美最大、知名度最高的氣象預報公司。 AccuWeather網站總部設在賓夕法尼亞州立大學,擁有最大數量的預測氣象數據,數據來源是獨立的,他們號稱能預測世界任何地方氣象,為美國政府以及付費機構提供氣象信息。
Auto Complete支持的URL查詢格式
?????? AccuWeather提供的api支持Auto Complete的功能,即城市的聯想搜索功能,可通過不完整的城市名搜索某一城市。每次搜索查詢最多返回10條結果,返回前10條結果。返回Parameters包括:?Version, Key, Type,Country, Administrative Area and Rank。
???????? AutoComplete支持的URL格式如下:
http://{{api}?or {{apidev}}.accuweather.com/locations/?{version}/cities/autocomplete{.{format}}?q={location}{&apikey={your key}}{&language={language code}}
上述URL中location指城市名稱,可使用英文/拼音、簡體中文、繁體中文進行查詢。language指返回結果的語音類型。下面通過改變location和language的語言格式進行驗證(僅針對英文、簡中、繁中三種語言格式)。
???????? 首先針對國內城市進行驗證。
???????? 如上表可知,
1.???? AccuWeather支持國內城市的拼音/簡中/繁中的搜索輸入。
城市名location為英文/拼音,且無指定返回語言則返回結果為英文/拼音。
城市名location為簡中,且指定language=zh/zh-cn,返回結果為簡中。
城市名location為繁中,且指定language=zh-tw,返回結果為繁中。
2.???? 部分市及以下(區、縣、鎮等)地區不支持URL中language=zh-tw繁體中文的搜索輸入。但支持URL中language=zh-hk繁體中文的搜索輸入。
如表中黃色區域的寧德,翔安區。
3.???? 輸入的城市名語言格式要與指定的language code一致,否則返回結果為空。
如表中最后兩列。
?
再針對國外城市進行驗證。
如上表可知,
1.???? AccuWeather支持國外城市的英文/簡中/繁中的搜索輸入。
城市名location為英文,且無指定返回語言則返回結果為英文。
城市名location為簡中,且指定language=zh/zh-cn,返回結果為簡中。
城市名location為繁中,且指定language=zh-tw或language=zh-hk,返回結果都為繁中。
2.???? 城市名location的語言格式要與指定的language code一致,否則返回結果為空。
如表中最后兩列。
?
綜合上述驗證可知,AccuWeather的Auto Complete功能(即城市的聯想搜索功能)支持城市的英文、簡中、繁中的搜索輸入。國內部分市及以下(區、縣、鎮等)地區不支持繁體中文的language=zh-tw的搜索輸入,但支持繁體中文的language=zh-hk的搜索輸入。
搜索時要保證URL中城市名location的語言格式與指定的language code一致,否則返回結果為空。
?
Weather之前使用的城市聯想搜索方式
???????? Weather之前使用將城市名轉化成英文/拼音的格式進行城市的搜索。
若用戶輸入城市名簡中/繁中,則將其轉化成拼音后,通過解析
http://apidev.accuweather.com/locations/{version}/cities/autocomplete?q={location}{&apikey={your key}}獲得查詢結果。
???????? 若用戶輸入城市名英文,則直接通過解析
http://apidev.accuweather.com/locations/{version}/cities/autocomplete?q={location}{&apikey={your key}}獲得查詢結果。
???????? 使用此方法的缺陷如下:
1.????不論用戶輸入哪種語言(英文、簡中、繁中),查詢得到的結果都是英文。
2.????對于國外城市,用戶必須輸入英文名才可以查詢到結果。若用戶不知道其英文名就無法搜索到該城市。所以,比較局限性。
3.????部分城市名稱不同,但拼音相同。導致搜索到的結果里包含很多用戶不期望的結果,且顯示結果都是拼音,無法區分城市名不同但拼音相同的城市。如下圖:
?
Weather目前使用的城市聯想搜索方式
???????? 目前使用URL
http://apidev.accuweather.com/locations/?{version}/cities/autocomplete?q={location}&apikey={your key}&language={language code}進行搜索。
與之前的使用方式相比,增加了language的限定。即要求用戶使用當前系統語言輸入城市名進行搜索。若當前語言為簡中,則用戶輸入簡中城市名后搜索顯示簡中的結果。若當前語言為繁中,則用戶輸入繁中城市名后搜索顯示繁中的結果。若當前語言為英文,則用戶輸入英文城市名后搜索顯示英文的結果。
這樣保證了顯示結果的語言與系統語言一致,且顯示的結果更直觀。如下圖,
對于國外城市,當系統語言為簡體/繁體中文時,只要輸入該城市的中文名稱就可以搜索到結果。與之前的使用方式相比,這點更人性化。
???????? 當前系統語言為簡體/繁體中文時,不再會出現因城市名不同拼音相同,而搜索到不期望的結果。
???????? 綜合上述,使用目前加language限定的查詢方式更方便更直觀,也去掉了之前的缺陷。
????????
?
總結
以上是生活随笔為你收集整理的关于手机天气应用中的城市搜索的联想查找方式优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hulu
- 下一篇: 微信小程序实现城市搜索功能(付源码)