Andriod+phonegap实现显示手机所在地天气
2012-08-06 19:32
155 查看
最近做了一个手机新闻阅读器,使用andriod和phonegap,基本实现了,最后又要求加入显示天气。查阅了一些资料,phonegap可以再web端调用手机的api,可以获取手机所在地的经纬度。我们可以想到:用经纬度获取城市名称,然后查询城市天气。不错,我也是这个思路,那么我们来具体实现。
首先我们要在andriod上配置好phonegap,这个不再在这里讨论,网上有许多资料。
首先,调用phonegap的api来获取经纬度,要使用这个API要确保手机开启网络服务和位置定位服务。
假设我们成功获取position,接下来我们就要通过position获取城市名称,这里我们通过google提供的api。
首先,要使用google的API要在html页面加上
当然要连接网络才能调用google的这个API,所以在使用之前应该有网络判断,这里不再详细解释
接下来我们就编写这两个处理函数:
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,这个不再在这里讨论,网上有许多资料。
首先,调用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显示手机所在地天气状况(序)
- [Cordova/Phonegap] 利用 MagicaVoxel 、Wikitude 和 PhoneGap 在手机上实现AR增强现实
- 手机网页Html代码实现(解决显示页面很小的问题)
- Android使用BroadcastReceiver实现手机开机之后显示画面的功能
- 手机摄像头图像在电脑上显示-实现视频监控
- 如何实现桌面App图标可以动态显示消息数(类似手机上的QQ图标)?
- PhoneGap创建的安卓WebApp项目如何去除全屏,显示手机顶部状态栏
- 手机网页Html代码实现(解决显示页面很小的问题)
- 举例说明BroadcastReceiver的使用方法----实现android手机开机之后显示画面的功能
- Android手机屏幕实现电脑显示
- Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示
- 安卓开发-利用smart-image-view来实现网络中的图片在手机上的显示
- 实现读取手机中所有联系人的主要信息(名称和联系电话),并以ListView显示
- 手机网页Html代码实现(解决显示页面很小的问题)
- EasyDarwin手机直播是如何实现的快速显示视频的方法
- 极客编程小挑战#29:实现手机上常见的某一功能的效果显示
- Chrome 插件,Andriod 手机和电脑同步显示。
- blog有用的一些代码: 显示您所在地的天气代码
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)