Andriod+phonegap实现显示手机所在地天气
来源:互联网 发布:生物钟紊乱 知乎 编辑:程序博客网 时间:2024/04/29 08:13
最近做了一个手机新闻阅读器,使用andriod和phonegap,基本实现了,最后又要求加入显示天气。查阅了一些资料,phonegap可以再web端调用手机的api,可以获取手机所在地的经纬度。我们可以想到:用经纬度获取城市名称,然后查询城市天气。不错,我也是这个思路,那么我们来具体实现。
首先我们要在andriod上配置好phonegap,这个不再在这里讨论,网上有许多资料。
首先,调用phonegap的api来获取经纬度,要使用这个API要确保手机开启网络服务和位置定位服务。
document.addEventListener("DOMContentLoaded",function(){document.addEventListener("deviceready", onDeviceReady, false); },false);function onDeviceReady() {navigator.geolocation.getCurrentPosition(onSuccess, onError); }第5行是调用phonegap的API,onSuccess是调用成功返回经纬度的处理函数,返回的经纬度封装在变量position里面,可以直接使用;onError是调用失败的处理函数;
假设我们成功获取position,接下来我们就要通过position获取城市名称,这里我们通过google提供的api。
首先,要使用google的API要在html页面加上
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=zh-CN"></script>
当然要连接网络才能调用google的这个API,所以在使用之前应该有网络判断,这里不再详细解释
接下来我们就编写这两个处理函数:
function onSuccess(position){//position是phonegap返回的位置信息,包括经纬度var latlng=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);//初始化一个google的经纬度对象var geocoder = new google.maps.Geocoder();//定义一个google地图位置服务对象var location,location1,location2;//这里三个location在后面详细说明 geocoder.geocode({'latLng':latlng},function(results,status){//调用google的API if(status==google.maps.GeocoderStatus.OK){//google返回的地理信息有很多,由详细到简单,如经纬度为(40,116)的地方,google返回的信息有:1. //精确到街道的详细地址,也就是你的通讯地址;2.简单一点的,如中国,北京市,门头沟地区;3.再简单一点,如中国,北京市;4.更简单的,如中国; //这里不再详细说明,这些地址信息都存储在results数组里,每个地址都有一个类型标示,如“中国,北京市”这个地址的标示是//"country,political",所以我们可以根据这些标示,来获取我们想要的地址,通过这些地址字符串,截取我们想要的城市名称
for(var i=0;i<results.length;i++) { if(results[i].types=="country,political") { location1=results[i].formatted_address; } else if(results[i].types=="administrative_area_level_1,political") { location2=results[i].formatted_address; } else if(results[i].types=="locality,political") { location3=results[i].formatted_address; } } if(location2.replace(location1,"")==location3.replace(location1,"")) location=location2.replace(location1,"").replace("市",""); else location=location3.replace(location2,"").replace("市","");
//location变量存储了我们要获取的城市名称,接下来就可以把location传递给天气预报的API,可以选用phonegap的插件功能直接调用底层的java来实现,这里不再详细解释。
}
还有个onError函数,这个可以根据需要,提示一些错误信息或者进行一下其他的逻辑。以上仅是我个人的一些编程思路和经验,如果有更好的思路想法,欢迎交流!!
- Andriod+phonegap实现显示手机所在地天气
- andriod+phonegap显示手机所在地天气状况(序)
- 使用andriod和phonegap获取手机所在地的城市名称
- Andriod Phonegap实现系统推送
- 根据IP获取所在地天气
- blog有用的一些代码: 显示您所在地的天气代码
- Andriod Phonegap(Cordova自定义插件)实现分享功能
- Phonegap Andriod自动打包.
- 开机实现将手机联系人、通话记录、手机号码、手机所在地、发送到指定邮箱里
- phonegap实现视频上传后显示播放
- Chrome 插件,Andriod 手机和电脑同步显示。
- 手机上运行酷欧天气,显示加载失败?
- 【手机+PC】获取用户地理位置、显示获取城市的天气
- android 手机不需要phonegap 对键盘的隐藏与显示
- android 手机不需要phonegap 对键盘的隐藏与显示 .
- phonegap+andriod+sencha开发注意
- 天气数据api根据IP地址查询所在地天气预报
- 查询Ip、身份证、手机所在地代码
- 从网络字节流中读取4个字节拼装,返回long
- HDOJ2853-KM匹配,放大技巧
- android开发 全屏 隐藏电池等信息
- 从网络字节流中读取2个字节拼装成为short
- Create tablespace in Oracle
- Andriod+phonegap实现显示手机所在地天气
- 我的博客迁移到 http://jasonli.info
- public static void Word2Byte(byte[] to, int toIndex, short from) {
- public static void DWord2Byte(byte[] to, int toIndex, long from) {
- HDU 3650 Hot Expo
- 闲来打油诗一首
- Android Dialog 示例
- 【DP】 hdu4249 A Famous Equation
- PHP相关系列 - PHP in_array函数的一个危险用法