文章目录

  • 前言
  • 一、和风天气申请+使用
  • 二、腾讯地图申请+使用
  • 三、两者连接

前言

使用技术:和风天气+腾讯地图整合使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、和风天气申请+使用

参考链接:
保姆级教学
官方文档

关键代码:

    private void loadCurrentWeather(String location, final String address) {//location:查询的地区,可通过该地区ID、经纬度进行查询经纬度格式:经度,纬度(!!注意经度在前,有被坑过TAT)QWeather.getWeatherNow(getActivity(),location,Lang.ZH_HANS, Unit.METRIC, new QWeather.OnResultWeatherNowListener() {@Overridepublic void onError(Throwable throwable) {Log.e("weather", "onError: "+throwable);}@Overridepublic void onSuccess(WeatherNowBean weatherNowBean) {Log.e("Weather", "getWeather onSuccess: " + new Gson().toJson(weatherNowBean));//先判断返回的status是否正确,当status正确时获取数据,若status不正确,可查看status对应的Code值找到原因if (Code.OK == weatherNowBean.getCode()) {// Log.e("Westher",new Gson().toJson(weatherNowBean));WeatherNowBean.NowBaseBean now = weatherNowBean.getNow();String tanqi=now.getText();String temp=now.getTemp();String shidu=now.getHumidity();String fengxiang=now.getWindDir();tv_hum.setText("湿度:"+shidu);tv_temp.setText(temp);tv_text.setText(tanqi);tv_wind.setText("东风:"+fengxiang);tv_location.setText(address);layout_space.setVisibility(View.VISIBLE);layout_2_set_location.setVisibility(View.INVISIBLE);//这里使用了lottieAnimation;自己的设定String tag=formateWeather(tanqi);weather_iv.setImageAssetsFolder("lottie/" +tag);weather_iv.setAnimation("lottie/"+tag+"/"+tag+".json");weather_iv.playAnimation();} else {//在此查看返回数据失败的原因Code code = weatherNowBean.getCode();Log.e("Weather", "failed code: " + code);}}});QWeather.getGeoCityLookup(getActivity(), new QWeather.OnResultGeoListener() {@Overridepublic void onError(Throwable throwable) {}@Overridepublic void onSuccess(GeoBean geoBean) {Log.e("Weather", "getWeather onSuccess: " + new Gson().toJson(geoBean));}});}//为了使用Lottie将中文转英文private String formateWeather(String tanqi) {if(tanqi.contains("晴")){return "sunny";}else if(tanqi.contains("阴")||tanqi.contains("云")){return "cloud";}else if(tanqi.contains("雪")){return "snow";}else if(tanqi.contains("雨")){return "rainy";}return "";}

layout文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="151dp"xmlns:app="http://schemas.android.com/apk/res-auto"><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="44dp"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/layout_space"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"><TextViewandroid:id="@+id/tv_temperature"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"android:textColor="@color/white"android:textSize="43sp"android:layout_marginLeft="25dp"/><TextViewandroid:id="@+id/tv_temp_unit"android:layout_width="wrap_content"android:layout_height="0dp"android:text="@string/temp_unit"android:textColor="@color/white"android:textStyle="bold"android:textSize="@dimen/ts_36"app:layout_constraintTop_toTopOf="@id/tv_temperature"app:layout_constraintBottom_toTopOf="@id/tv_text"app:layout_constraintStart_toEndOf="@id/tv_temperature"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="@id/tv_temperature"app:layout_constraintStart_toEndOf="@id/tv_temperature"android:textColor="@color/white"android:textSize="@dimen/ts_12"android:id="@+id/tv_text"android:layout_marginLeft="5dp"android:layout_marginBottom="8dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="@id/tv_text"app:layout_constraintStart_toEndOf="@id/tv_text"android:textColor="@color/white"android:textSize="@dimen/ts_12"android:id="@+id/tv_location"android:layout_marginLeft="5dp"/><TextViewandroid:id="@+id/tv_outside_humidity"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintTop_toBottomOf="@id/tv_temperature"app:layout_constraintStart_toStartOf="@id/tv_temperature"android:textSize="@dimen/ts_12"android:textColor="@color/blue_BFD2FF"/><Viewandroid:layout_width="1dp"android:layout_height="12dp"app:layout_constraintStart_toEndOf="@id/tv_outside_humidity"app:layout_constraintTop_toTopOf="@id/tv_outside_humidity"app:layout_constraintBottom_toBottomOf="@id/tv_outside_humidity"android:background="@color/blue_BFD2FF"android:layout_marginLeft="12dp"android:id="@+id/v_space"/><TextViewandroid:id="@+id/tv_outside_wind_dir"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="@dimen/ts_12"android:textColor="@color/blue_BFD2FF"app:layout_constraintTop_toTopOf="@id/tv_outside_humidity"app:layout_constraintStart_toEndOf="@id/v_space"android:layout_marginLeft="12dp"/></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/layout_2_set_location"android:layout_width="0dp"android:layout_height="0dp"app:layout_constraintTop_toTopOf="@id/layout_space"app:layout_constraintBottom_toBottomOf="@id/layout_space"app:layout_constraintStart_toStartOf="@id/layout_space"app:layout_constraintEnd_toEndOf="@id/layout_space"><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"><TextViewandroid:id="@+id/tv_weather_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"android:textColor="@color/white"android:textSize="@dimen/ts_16"android:layout_marginLeft="25dp"android:text="@string/no_weather_info"/><TextViewandroid:id="@+id/tv_advise_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintStart_toStartOf="@id/tv_weather_tip"app:layout_constraintTop_toBottomOf="@id/tv_weather_tip"android:textSize="@dimen/ts_12"android:layout_marginTop="5dp"android:textColor="@color/blue_BFD2FF"android:text="@string/set_family_first"/></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout></RelativeLayout>

效果图:


二、腾讯地图申请+使用

参考链接:
https://lbs.qq.com/mobile/androidLocationSDK/androidGeoGuide/androidGeoCreat
https://blog.csdn.net/yechaoa/article/details/88893785
https://lbs.qq.com/tool/component-picker.html
代码如下(示例):

mWebView=findViewById(R.id.web_map);btn =findViewById(R.id.btn_map);String mUrl = "https://apis.map.qq.com/tools/locpicker?search=1&type=0&backurl=http://callback&key=自己的key&referer=自己的工程名";WebSettings settings = mWebView.getSettings();settings.setRenderPriority(WebSettings.RenderPriority.HIGH);settings.setSupportMultipleWindows(true);settings.setJavaScriptEnabled(true);settings.setSavePassword(false);settings.setJavaScriptCanOpenWindowsAutomatically(true);settings.setMinimumFontSize(settings.getMinimumFontSize() + 8);settings.setAllowFileAccess(false);settings.setTextSize(WebSettings.TextSize.NORMAL);mWebView.setVerticalScrollbarOverlay(true);mWebView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (!url.startsWith("http://callback")) {view.loadUrl(url);} else {try {//转utf-8编码String decode = URLDecoder.decode(url, "UTF-8");// LogUtil.i(decode);//转uri,然后根据key取值Uri uri = Uri.parse(decode);Log.e("address",uri.toString());latng = uri.getQueryParameter("latng");//纬度在前,经度在后,以逗号分隔String[] split = latng.split(",");DecimalFormat decimalFormat=new DecimalFormat(".00");lat=decimalFormat.format(Float.parseFloat(split[0]));//纬度lng=decimalFormat.format(Float.parseFloat(split[1]));//经度address = uri.getQueryParameter("city");//地址Log.e("address",lat+"///"+lng+"///"+address+"///"+latng);//  LogUtil.i(uri.getQueryParameter("addr"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}}return true;}});mWebView.loadUrl(mUrl);

layout文件:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Activity.MappingActivity"><WebViewandroid:id="@+id/web_map"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginBottom="56dp"app:layout_constraintBottom_toTopOf="@+id/btn_map"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"></WebView><TextViewandroid:id="@+id/btn_map"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginStart="16dp"android:layout_marginEnd="16dp"android:layout_marginBottom="8dp"android:background="@drawable/background_circle_bule_gradient"android:gravity="center"android:text="@string/confirm"android:textColor="@color/white"android:textSize="@dimen/ts_16"app:layout_constraintBottom_toBottomOf="parent"tools:layout_editor_absoluteX="16dp" /></androidx.constraintlayout.widget.ConstraintLayout>

效果图:

三、两者连接

流程:天气处设置监听器→跳转腾讯地图(有回调结果的跳转)→腾讯地图下设置一个按钮并设置监听器→跳转天气并带回地址名和经纬度

代码如下(示例):

天气页面(有回调的跳转):

 layout_2_set_location.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//TOdo:设置当前位置。Intent intent =new Intent(getActivity(), MappingActivity.class);int requestCode =1;startActivityForResult(intent,requestCode);}});@Overridepublic void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);//三个参数:int requestCode, int resultCode, Intent data:分别表示结果请求码,结果码 ,data就是我们刚刚在另一个activity保存的data/*** 1判断code 2 从data 中取出数据 3显示*/if(requestCode==1&&resultCode==2){String result=data.getStringExtra("addr");String address =data.getStringExtra("address");Log.e("address",result);loadCurrentWeather(result,address);}}

地图页面:

btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//返回结果之前先保存一个结果int resultCode=2;//准备一个带额外数据的intent对象Intent data=new Intent();//结果是从输入框中获取addr=lng+","+lat;data.putExtra("addr",addr);//key valuedata.putExtra("address",address);//设置结果  data 通过RESULT 取得结果setResult(resultCode,data);finish();}});

Android 和风天气+腾讯地图相关推荐

  1. Android和风天气sdk

    Android使用和风天气Sdk获取实况天气数据(一) 说明(遇到的坑) 效果图 实现过程 第一步,注册账号(2018年以后的开发者,如果是以前的想知道如何获取实况天气也可以私我) 第二步 添加引用 ...

  2. android 跳转腾讯地图导航,Android 跳转到百度、高德、腾讯地图导航

    项目中遇到的一个需求,跳转外部App进行步行导航.分别是百度.高德.腾讯. 东西不难但是每次都要去官方文档找(有时候会更新一些字段). 所以在此做下记录和分享. 腾讯地图 try { LatLng l ...

  3. android 跳转腾讯地图导航,Android 地图跳转到百度、高德、腾讯导航

    项目中遇到的一个需求,跳转外部App进行步行导航.分别是百度.高德.腾讯. 东西不难但是每次都要去官方文档找(有时候会更新一些字段). 所以在此做下记录和分享. 腾讯地图 try { LatLng l ...

  4. android 和风天气 调用示例,Android中 GsonFormat插件解析Jason 数据+和风天气接口解析案例(示例代码)...

    首先 转载自http://www.cnblogs.com/androidsuperman/p/4579249.html     感谢 @西北野狼  同学. 第一部分: GsonFormat 插件基本使 ...

  5. 手把手带你用python+和风天气+腾讯云函数+qmsg实现定时推送每日天气

    文章目录 ✨项目前言

  6. Android使用高德和风天气Sdk获取定位实况天气数据(二)

    Android使用高德和风天气Sdk获取定位实况天气数据(二) 先看一下效果 关于 实现 第一步,引用高德api与和风天气 第二步,修改AndroidManifest.xml 第三步,修改activi ...

  7. Android使用ButterKnife与和风天气sdk

    Android使用ButterKnife与和风天气sdk获取实况天气数据(二) 关于 效果 ButterKnife引用 第一步,修改activity_main.xml 修改MainActicity.j ...

  8. (更新源码)AndroidStudio新手开发:天气app(百度地图api+和风天气api+城市查询+折线展示)

    AndroidStudio新手开发:天气app(百度地图api+和风天气api+城市查询+折线展示) 1.内容简介 2.环境配置 3.导入他人demo 4.AS项目分析 5.天气项目流程 6.数据探寻 ...

  9. Android使用高德与和风天气实现定位实况数据显示 简易新闻(十)

    Android使用高德与和风天气实现定位实况数据显示 简易新闻(十) 关于 效果图 第一步,添加和风引用 第二步,修改AndroidManifest.xml 第三步,修改activity_main.x ...

  10. Android 起调第三方导航,百度地图,高德地图,腾讯地图。起调高德地图导航

    主要工具类 /*** Created by meixi on 2018/6/29.* 使用第三方导航:高德.百度..........*/ public class AmapUtil {public s ...

最新文章

  1. oracle 批量导出sequence,Oracle中批量導出Sequence
  2. 2018-2019-2 20165313 《网络对抗技术》Exp4 恶意代码分析
  3. UBUNTU 下查看所有的C库函数和查询 LINUX 编成必备
  4. golang 数据类型 简介
  5. onnx.onnx_cpp2py_export.checker.ValidationError
  6. IDEA使用自带数据库连接工具连接Mysql,及报错解决
  7. Linux基础命令---killall
  8. Log4j2突发重大漏洞
  9. 鸿蒙报名什么时候推送,鸿蒙系统手机版什么时候推送?鸿蒙系统手机版推送时间详解...
  10. oracle存在于A不存在于B,Oracle试题
  11. Ubuntu 18.04/20.04 部署minikube
  12. 帅瞎了!手机也能写Python代码!手把手教你在手机或平板上配置Python环境!
  13. VBA 实现批量word 转 pdf
  14. 视频流媒体服务器智能云终端如何快速获取直播流地址?
  15. 被动语态 动词的过去分词
  16. ftp连接服务器失败:响应:220-FileZilla Server version 0.9.24 beta 响应:220-written by Tim Kosse (Tim.Kosse@gmx.d
  17. DTAS 3D在车身公差分析中的应用案例
  18. 这颗“洋葱”要上市了,低调盈利2亿元能跟上跨境电商队伍么?
  19. 基于反馈的动态补偿模型
  20. 适配新路由3(D2)的LEDE/OpenWrt固件

热门文章

  1. BinaryBomb实验
  2. 微信内置浏览器支付流程
  3. python爬虫英文单词_利用PYTHON 爬虫爬出自己的英语单词库
  4. python爬虫扇贝单词库
  5. 基于完成例程的重叠I/O网络模型
  6. 汽车诊断工程师的黎明:并行刷写策略与实现
  7. 树莓派4B系统烧录——Raspberry Pi Imager
  8. c语言常用延时程序,新手常用单片机延时程序
  9. Rainmeter音频频谱插件分享
  10. 【历史上的今天】12 月 12 日:英特尔创始人出生;PSP 发布;双十二购物狂欢节