您的位置:首页 > 其它

关于手机天气应用中的城市搜索的联想查找方式优化

2016-04-28 19:19 441 查看
---- 作者:Meiq.lin

笔者近期在开发一款品牌手机上预装的天气类应用,开发过程中对于城市查询的联想查找方式有些优化,写下来供自己及有需要的人士参考。

AccuWeather简介

AccuWeather气象预报公司是在1962年由知名气象学教授麦尔斯(Joel Myers)所创。该公司成为

业界先驱,为知名媒体、能源公司、滑雪场等顾客,量身订做他们需要的气象预报数据。

长期以来,AccuWeather是全美最大、知名度最高的气象预报公司。 AccuWeather网站总部设在宾夕法尼亚州立大学,拥有最大数量的预测气象数据,数据来源是独立的,他们号称能预测世界任何地方气象,为美国政府以及付费机构提供气象信息。

Auto Complete支持的URL查询格式

AccuWeather提供的api支持Auto
Comple
te的功能,即城市的联想搜索功能,可通过不完整的城市名搜索某一城市。每次搜索查询最多返回10条结果,返回前10条结果。返回Parameters包括: Version,
Key, Type,Country, Administrative Area and Rank。

AutoComplete支持的URL格式如下:
http://{ href="http://apidev.accuweather.com/developers/locationAPIparameters#queryParameters" target=_blank>{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:// href="http://apidev.accuweather.com/developers/locationAPIparameters#queryParameters" target=_blank>apidev.accuweather.com/locations/{version}/cities/autocomplete?q={location}{&apikey={your
key}}获得查询结果。

若用户输入城市名英文,则直接通过解析
http:// href="http://apidev.accuweather.com/developers/locationAPIparameters#queryParameters" target=_blank>apidev.accuweather.com/locations/{version}/cities/autocomplete?q={location}{&apikey={your
key}}获得查询结果。

使用此方法的缺陷如下:

1. 不论用户输入哪种语言(英文、简中、繁中),查询得到的结果都是英文。

2. 对于国外城市,用户必须输入英文名才可以查询到结果。若用户不知道其英文名就无法搜索到该城市。所以,比较局限性。

3. 部分城市名称不同,但拼音相同。导致搜索到的结果里包含很多用户不期望的结果,且显示结果都是拼音,无法区分城市名不同但拼音相同的城市。如下图:



Weather目前使用的城市联想搜索方式

目前使用URL
http:// href="http://apidev.accuweather.com/developers/locationAPIparameters#queryParameters" target=_blank>apidev.accuweather.com/locations/ {version}/cities/autocomplete?q={location}&apikey={your
key}&language={language
code}进行搜索。

与之前的使用方式相比,增加了language的限定。即要求用户使用当前系统语言输入城市名进行搜索。若当前语言为简中,则用户输入简中城市名后搜索显示简中的结果。若当前语言为繁中,则用户输入繁中城市名后搜索显示繁中的结果。若当前语言为英文,则用户输入英文城市名后搜索显示英文的结果。

这样保证了显示结果的语言与系统语言一致,且显示的结果更直观。如下图,



对于国外城市,当系统语言为简体/繁体中文时,只要输入该城市的中文名称就可以搜索到结果。与之前的使用方式相比,这点更人性化。

当前系统语言为简体/繁体中文时,不再会出现因城市名不同拼音相同,而搜索到不期望的结果。

综合上述,使用目前加language限定的查询方式更方便更直观,也去掉了之前的缺陷。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: