首先,通过之前用过的百度地图,实现定位功能;首先去百度开放云申请密钥,这里就不说明申请过程了,不懂得可以百度一下。

申请完密钥后,需要去声明Activity的地方添加上下面的语句:

           <meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="dGozMoOnqaOgcpaj3f3NBtxh" />

Value值 即填写申请的密钥;

声明定位:

 // 定位相关public LocationClient mLocationClient = null;public BDLocationListener myListener = new MyLocationListener();
     mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类mLocationClient.registerLocationListener(myListener); // 注册监听函数LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// 打开gpsoption.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02// option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms,如果不设置,默认只定位一次option.setIsNeedAddress(true);// 返回的定位结果包含地址信息option.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向option.setLocationMode(com.baidu.location.LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式option.setProdName(getPackageName());mLocationClient.setLocOption(option);
                mLocationClient.start();

定义监听器:

// 定位public class MyLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null)return;StringBuffer sb = new StringBuffer(256);sb.append("time : ");sb.append(location.getTime());sb.append("\nerror code : ");sb.append(location.getLocType());sb.append("\nlatitude : ");sb.append(location.getLatitude());sb.append("\nlontitude : ");sb.append(location.getLongitude());sb.append("\nradius : ");sb.append(location.getRadius());if (location.getLocType() == BDLocation.TypeGpsLocation) {sb.append("\nspeed : ");sb.append(location.getSpeed());sb.append("\nsatellite : ");sb.append(location.getSatelliteNumber());} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {sb.append("\naddr : ");sb.append(location.getAddrStr());}String place = location.getAddrStr();
//          locationplace.setText(location.getCity());localcity.setCity(location.getCity());Toast.makeText(getApplicationContext(), "" + place, 1).show();}}

下面就是如何获取天气:

获取天气的接口,网上有很多,但有的 已经不能再用了,而且调用的时候 很不稳定,数据不够准确;这里是网上找的一个网友搜集的比较全的一个天气api接口:

http://www.eoeandroid.com/thread-333874-1-1.html

这里我用的是:http://weather.51wnl.com/weatherinfo/GetMoreWeather?cityCode=101040100&weatherType=0

感觉还不错,其中cityCode是城市的代号,type  为0的时候 是最近几天的详细天气,为1的时候 是当前温度信息;

首先定义一个Weather类:

package com.example.util;public class Weather {private String city;private String cityId;private String toptemp;private String lowtemp;private String weather;  //天气private String wind;     //风向private String windfl;   //风力private String gxtime;private String index;   //穿衣指数private String index_d; //穿衣建议public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getCityId() {return cityId;}public void setCityId(String cityId) {this.cityId = cityId;}public String getToptemp() {return toptemp;}public void setToptemp(String toptemp) {this.toptemp = toptemp;}public String getLowtemp() {return lowtemp;}public void setLowtemp(String lowtemp) {this.lowtemp = lowtemp;}public String getWeather() {return weather;}public void setWeather(String weather) {this.weather = weather;}public String getGxtime() {return gxtime;}public void setGxtime(String gxtime) {this.gxtime = gxtime;}public String getWind() {return wind;}public void setWind(String wind) {this.wind = wind;}public String getWindfl() {return windfl;}public void setWindfl(String windfl) {this.windfl = windfl;}public String getIndex() {return index;}public void setIndex(String index) {this.index = index;}public String getIndex_d() {return index_d;}public void setIndex_d(String index_d) {this.index_d = index_d;}}

获取天气的方法:

public void GetFirstWeather(){URL url1, url2;if (isInterent.hasInternet(this)) {mLocationClient.requestLocation();String city = localcity.getCity();if (city.contains("市") || city.contains("省")) { City = city.substring(0, city.length() - 1);}try {url1 = new URL(String.format(getString(R.string.weatherurl)+ "?cityCode=%1$s&weatherType=0",LocalCity.getCityIdByName(City)));GetWeather nt = new GetWeather(url1, "0");nt.start();url2 = new URL(String.format(getString(R.string.weatherurl)+ "?cityCode=%1$s&weatherType=1",LocalCity.getCityIdByName(City)));GetWeather nt1 = new GetWeather(url2, "1");nt1.start();} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}} else {Toast.makeText(getApplicationContext(), "网络异常,请检查网络是否连接",Toast.LENGTH_LONG).show();}}
 class GetWeather extends Thread {private URL url;private String IsNow;public GetWeather(URL url, String IsNow) {this.url = url;this.IsNow = IsNow;}@Overridepublic void run() {HttpURLConnection conn = null; // 连接对象String resultData = HttpUtil.getResault(conn, url);Log.i("天气", resultData);String resultmsg = null;Looper.prepare();if (IsNow.equals("0")) {Message msg = new Message();resultmsg = json(resultData);msg.what = 1;msg.obj = resultmsg;handler.sendMessage(msg);} else {Message msg1 = new Message();resultmsg = json1(resultData);msg1.what = 2;msg1.obj = resultmsg;handler.sendMessage(msg1);}Looper.loop();}}
 // 解析天气的json数据public String json(String json) {String jsonresult = null;Weather weather = new Weather();try {obj = new JSONObject(json);JSONObject contentObject = obj.getJSONObject("weatherinfo");weather.setCity(contentObject.getString("city"));weather.setToptemp(contentObject.getString("temp1"));weather.setWeather(contentObject.getString("weather1"));weather.setIndex(contentObject.getString("index"));weather.setIndex_d(contentObject.getString("index_d"));jsonresult = weather.getCity() + ":  " + weather.getToptemp()+ "\n天气:" + weather.getWeather() + "   "+"\n穿衣指数:" + weather.getIndex() + "\n" + weather.getIndex_d();} catch (JSONException e) {Log.i("Tag", "解析json失败");e.printStackTrace();}weather = null;return jsonresult;}
// 解析实时天气的json数据public String json1(String json) {String jsonresult = null;Weather weather = new Weather();try {obj = new JSONObject(json);JSONObject contentObject = obj.getJSONObject("weatherinfo");weather.setToptemp(contentObject.getString("temp"));weather.setWind(contentObject.getString("WD"));weather.setWindfl(contentObject.getString("WS"));weather.setGxtime(contentObject.getString("time"));jsonresult = "当前温度:" + weather.getToptemp() + "  风向风力:  "+ weather.getWind() + weather.getWindfl() + "  "+ weather.getGxtime() + "发布";} catch (JSONException e) {Log.i("Tag", "解析json失败");e.printStackTrace();}weather = null;return jsonresult;}

根据定位返回的城市信息,获取城市天气代号代码:

package com.example.util;public class LocalCity {public static String cityIds = "北京:101010100朝阳:101010300顺义:101010400" +"怀柔:101010500通州:101010600昌平:101010700延庆:101010800丰台:101010900石景山:101011000大兴:101011100房山:101011200密云:101011300门头沟:101011400平谷:101011500八达岭:101011600佛爷顶:101011700汤河口:101011800密云上甸子:101011900斋堂:101012000霞云岭:101012100北京城区:101012200海淀:101010200天津:101030100宝坻:101030300东丽:101030400西青:101030500北辰:101030600蓟县:101031400汉沽:101030800静海:101030900津南:101031000塘沽:101031100大港:101031200武清:101030200宁河:101030700上海:101020100宝山:101020300嘉定:101020500南汇:101020600浦东:101021300青浦:101020800松江:101020900奉贤:101021000崇明:101021100徐家汇:101021200闵行:101020200金山:101020700石家庄:101090101张家口:101090301承德:101090402唐山:101090501秦皇岛:101091101沧州:101090701衡水:101090801邢台:101090901邯郸:101091001保定:101090201廊坊:101090601郑州:101180101新乡:101180301许昌:101180401平顶山:101180501信阳:101180601南阳:101180701开封:101180801洛阳:101180901商丘:101181001焦作:101181101鹤壁:101181201濮阳:101181301周口:101181401漯河:101181501驻马店:101181601三门峡:101181701济源:101181801安阳:101180201合肥:101220101芜湖:101220301淮南:101220401马鞍山:101220501安庆:101220601宿州:101220701阜阳:101220801亳州:101220901黄山:101221001滁州:101221101淮北:101221201铜陵:101221301宣城:101221401六安:101221501巢湖:101221601池州:101221701蚌埠:101220201杭州:101210101舟山:101211101湖州:101210201嘉兴:101210301金华:101210901绍兴:101210501台州:101210601温州:101210701丽水:101210801衢州:101211001宁波:101210401重庆:101040100合川:101040300南川:101040400江津:101040500万盛:101040600渝北:101040700北碚:101040800巴南:101040900长寿:101041000黔江:101041100万州天城:101041200万州龙宝:101041300涪陵:101041400开县:101041500城口:101041600云阳:101041700巫溪:101041800奉节:101041900巫山:101042000潼南:101042100垫江:101042200梁平:101042300忠县:101042400石柱:101042500大足:101042600荣昌:101042700铜梁:101042800璧山:101042900丰都:101043000武隆:101043100彭水:101043200綦江:101043300酉阳:101043400秀山:101043600沙坪坝:101043700永川:101040200福州:101230101泉州:101230501漳州:101230601龙岩:101230701晋江:101230509南平:101230901厦门:101230201宁德:101230301莆田:101230401三明:101230801兰州:101160101平凉:101160301庆阳:101160401武威:101160501金昌:101160601嘉峪关:101161401酒泉:101160801天水:101160901武都:101161001临夏:101161101合作:101161201白银:101161301定西:101160201张掖:101160701广州:101280101惠州:101280301梅州:101280401" +"汕头:101280501深圳:101280601珠海:101280701佛山:101280800肇庆:101280901湛江:101281001江门:101281101河源:101281201清远:101281301云浮:101281401潮州:101281501东莞:101281601中山:101281701阳江:101281801揭阳:101281901茂名:101282001汕尾:101282101韶关:101280201南宁:101300101柳州:101300301来宾:101300401桂林:101300501梧州:101300601防城港:101301401贵港:101300801玉林:101300901百色:101301001钦州:101301101河池:101301201北海:101301301崇左:101300201贺州:101300701贵阳:101260101安顺:101260301都匀:101260401兴义:101260906铜仁:101260601毕节:101260701六盘水:101260801遵义:101260201凯里:101260501昆明:101290101红河:101290301文山:101290601玉溪:101290701楚雄:101290801普洱:101290901昭通:101291001临沧:101291101怒江:101291201香格里拉:101291301丽江:101291401德宏:101291501景洪:101291601大理:101290201曲靖:101290401保山:101290501呼和浩特:101080101乌海:101080301集宁:101080401通辽:101080501阿拉善左旗:101081201鄂尔多斯:101080701临河:101080801锡林浩特:101080901呼伦贝尔:101081000乌兰浩特:101081101包头:101080201赤峰:101080601南昌:101240101上饶:101240301抚州:101240401宜春:101240501鹰潭:101241101赣州:101240701景德镇:101240801萍乡:101240901新余:101241001九江:101240201吉安:101240601武汉:101200101黄冈:101200501荆州:101200801宜昌:101200901恩施:101201001十堰:101201101神农架:101201201随州:101201301荆门:101201401天门:101201501仙桃:101201601潜江:101201701襄樊:101200201鄂州:101200301孝感:101200401黄石:101200601咸宁:101200701成都:101270101自贡:101270301绵阳:101270401南充:101270501达州:101270601遂宁:101270701广安:101270801巴中:101270901泸州:101271001宜宾:101271101内江:101271201资阳:101271301乐山:101271401眉山:101271501凉山:101271601雅安:101271701甘孜:101271801阿坝:101271901德阳:101272001广元:101272101攀枝花:101270201银川:101170101中卫:101170501固原:101170401石嘴山:101170201吴忠:101170301西宁:101150101黄南:101150301海北:101150801果洛:101150501玉树:101150601海西:101150701海东:101150201海南:101150401济南:101120101潍坊:101120601临沂:101120901菏泽:101121001滨州:101121101东营:101121201威海:101121301枣庄:101121401日照:101121501莱芜:101121601聊城:101121701青岛:101120201淄博:101120301德州:101120401烟台:101120501济宁:101120701泰安:101120801西安:101110101延安:101110300榆林:101110401铜川:101111001商洛:101110601安康:101110701汉中:101110801宝鸡:101110901咸阳:101110200渭南:101110501太原:101100101临汾:101100701运城:101100801朔州:101100901忻州:101101001长治:101100501大同:101100201阳泉:101100301晋中:101100401晋城:101100601吕梁:101101100乌鲁木齐:101130101石河子:101130301昌吉:101130401吐鲁番:101130501库尔勒:101130601阿拉尔:101130701阿克苏:101130801喀什:101130901伊宁:101131001塔城:101131101哈密:101131201和田:101131301阿勒泰:101131401阿图什:101131501博乐:101131601克拉玛依:101130201拉萨:101140101山南:101140301阿里:101140701昌都:101140501那曲:101140601日喀则:101140201林芝:101140401台北县:101340101高雄:101340201台中:101340401海口:101310101三亚:101310201东方:101310202临高:101310203澄迈:101310204儋州:101310205昌江:101310206白沙:101310207琼中:101310208定安:101310209屯昌:101310210琼海:101310211文昌:101310212保亭:101310214万宁:101310215陵水:101310216西沙:101310217南沙岛:101310220乐东:101310221五指山:101310222琼山:101310102长沙:101250101株洲:101250301衡阳:101250401郴州:101250501常德:101250601益阳:101250700娄底:101250801邵阳:101250901岳阳:101251001张家界:101251101怀化:101251201黔阳:101251301永州:101251401吉首:101251501湘潭:101250201南京:101190101镇江:101190301苏州:101190401南通:101190501扬州:101190601宿迁:101191301徐州:101190801淮安:101190901连云港:101191001常州:101191101泰州:101191201无锡:101190201盐城:101190701哈尔滨:101050101牡丹江:101050301佳木斯:101050401绥化:101050501黑河:101050601双鸭山:101051301伊春:101050801大庆:101050901七台河:101051002鸡西:101051101鹤岗:101051201齐齐哈尔:101050201大兴安岭:101050701长春:101060101延吉:101060301四平:101060401白山:101060901白城:101060601辽源:101060701松原:101060801吉林:101060201通化:101060501沈阳:101070101鞍山:101070301抚顺:101070401本溪:101070501丹东:101070601葫芦岛:101071401营口:101070801阜新:101070901辽阳:101071001铁岭:101071101朝阳:101071201盘锦:101071301大连:101070201锦州:101070701 ";private String city = "郑州";public String getCity() {return city;}public void setCity(String city) {this.city = city;}/*** 通过城市的名称获取对应的城市id,如果不存在则返回 null* * @param name*            城市名称* @return cityid* */public static String getCityIdByName(String name) {String cityId = null;int startIndex = LocalCity.cityIds.indexOf(name) + name.length() + 1;// 开始截取的位置if (startIndex == -1) {return null;}cityId = LocalCity.cityIds.trim().substring(startIndex, startIndex + 9);return cityId;}
}

源码地址:

http://download.csdn.net/detail/xiaorenwu1206/8067905

通过百度地图实现定位并获取本地当日天气信息相关推荐

  1. 利用百度地图Android定位SDK获取经纬度

    环境的搭建(参考上一次的文章) 百度地图Android定位SDK的使用 2.在Android studio里设计程序来获取经纬度 界面布局activity_main.xml文件的源代码: <?x ...

  2. 百度地图js 定位并获得精确的地址信息

    使用百度地图js api定位并获得精确地址: var map = new BMap.Map("map"); var geolocation = new BMap.Geolocati ...

  3. 【百度地图api】之获取当前用户地理位置-浏览器定位

    1.通过html5 获取当前gps坐标,不过这种一般PC网页很多都不适用,一般用作手机网页 HTML5 Geolocation API (地理位置应用程序接口) 目前PC浏览器支持情况: Firefo ...

  4. 记录:百度地图开发 ios系统获取定位失

    使用百度地图浏览器定位, 安卓手机和pc 浏览器都可以获取到定位, 唯独苹果手机IOS系统获取定位失败, 查看 权限什么的都开了 , 最后发现是因为界面地址是http协议的, 界面地址需要使用http ...

  5. android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...

    开放地图API无外乎google ,百度,高德等.其它的还有很多,不过比较好用的就这三种了,如果不需要出国(台湾例外),则最好使用百度地图,性能比高德好的多,无聊的时候自己可以测试测试.. 下面我简单 ...

  6. 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)

    使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...

  7. AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  8. AngularJS进阶 十九 在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  9. 【Springboot】集成百度地图实现定位打卡功能

    目录 第一章 需求分析 第二章 概要设计 第三章 详细设计 3.1 环境搭建 3.1.1 获取百度地图ak 3.1.2 创建springboot项目 3.2 配置application.propert ...

最新文章

  1. Java单例模式代码实现方式
  2. 【MATLAB】绘图技巧(4)——网格线与边框线控制
  3. UVA 1602 Lattice Animals
  4. Spring–设计领域模型和服务层
  5. 函数调用关系图如何画_程序是如何在 CPU 中运行的(二)
  6. Windows下开发Perl程序之环境搭建
  7. mount的api使用笔记
  8. php 添加数据sql语句,PHP添加/修改/删除SQL语句
  9. matlab编制刚度矩阵,单元刚度矩阵MATLAB编程.docx
  10. Schlumberger Drilling Office v4.0 1CD(综合钻井工程设计软件)
  11. 污水流量计常见的三种电磁损耗的简单介绍
  12. u盘安全删除 linux,怎么安全删除U盘
  13. LabVIEW进制转换总结
  14. design/sourcecode/课堂笔记designPrinciples
  15. beeline 参数
  16. eversync safari_值得推荐的chrome书签同步插件汇总
  17. 【数据结构】算法的时间复杂度和空间复杂度解析
  18. Android 项目实战:智慧北京(黑马)
  19. AD域USB禁用详解
  20. python边际效用递减_王海洋 - 选择的力量

热门文章

  1. Redis + Lua 实现 sorted set 集合保证固定数量的数据,并保留新数据剔除旧数据
  2. 机械手标定旋转中心偏移公示推导
  3. 系统的软中断CPU使用率升高,我该怎么办?
  4. app卡在启动页面android,app启动一直停留在启动页面
  5. 基于mean-shift的简单目标跟踪
  6. 【Qt学习】04 信号-槽 子窗口向主窗口传递参数
  7. 正面杠腾讯音乐与网易云音乐,抖音与快手谁能“弯道超车“?
  8. 【团体程序设计天梯赛-部分练习集】
  9. 2017年上海交通大学软件学院暑期夏令营机试题目
  10. 电脑应用图标变成白纸