Android 使用 Retrofit 保存 高德 静态地图API 获取的地图图片
1、导入包
api 'com.squareup.retrofit2:retrofit:2.3.0' // 必要retrofit依赖
api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' // 必要依赖,和Rxjava结合必须用到
api 'com.squareup.retrofit2:converter-gson:2.3.0' // 必要依赖,解析json字符所用
2、设置 LOCATION_URL = "https://restapi.amap.com/";
全URL为:
https://restapi.amap.com/v3/staticmap?location=112.481475,36.990564&zoom=10&size=300*300&markers=mid,,A:112.481475,39.990564&key=申请高德web端的key
3、使用方法:
private void getLocationImage(String location , String zoom , String size , String markers ,String key , String scale){// 步骤1:创建Retrofit对象Retrofit retrofit = new Retrofit.Builder().baseUrl(LOCATION_URL) // 设置 网络请求 Url.addCallAdapterFactory(RxJava2CallAdapterFactory.create()) // 支持RxJava.build();// 步骤2:创建 网络请求接口 的实例LocationImageService locationImageRequest = retrofit.create(LocationImageService.class);// 步骤6:采用Observable<...>形式 对 网络请求 进行封装Observable<ResponseBody> observable = locationImageRequest.getImage(location,zoom,size,markers,key,scale);// 步骤7:发送网络请求observable.subscribeOn(Schedulers.io()) // 在IO线程进行网络请求.observeOn(AndroidSchedulers.mainThread()).subscribe(new DisposableObserver<ResponseBody>() {@Overridepublic void onNext(ResponseBody responseBody) {Bitmap bitmap = null;byte[] bys;try {bys = responseBody.bytes();bitmap = BitmapFactory.decodeByteArray(bys, 0, bys.length);try {File floderPath = getExternalFilesDir(Environment.DIRECTORY_PICTURES);FileUtils.saveImg(bitmap, floderPath.getAbsolutePath() , "location");String savePath = floderPath.getAbsolutePath() + File.separator + location + ".jpg";Log.e("MainActivity",savePath + ":保存地址 savePath");} catch (IOException e) {Log.d("MainActivity", e.toString());}} catch (IOException e) {Log.d("MainActivity", e.toString());}if (bitmap != null) {bitmap.recycle();}}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});}
4、创建LocationImageService
public interface LocationImageService {@GET("v3/staticmap")Observable<ResponseBody> getImage(@Query("location") String location,@Query("zoom") String zoom,@Query("size") String size,@Query("markers") String markers,@Query("key") String key,@Query("scale") String scale);
}
5、创建 FileUtils saveImg() 方法
/*** 保存图片到SD卡** @param bm 图片bitmap对象* @param floderPath 下载文件保存目录* @param fileName 文件名称(不带后缀)*/public static void saveImg(Bitmap bm, String floderPath, String fileName) throws IOException {//如果不保存在sd下面下面这几行可以不加if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {Log.e("FileUtils","SD卡不存在");return;}File folder = new File(floderPath);if (!folder.exists()) {folder.mkdirs();}String savePath = folder.getPath() + File.separator + fileName + ".jpg";File file = new File(savePath);BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);Log.e("FileUtils", savePath + " 保存成功");bos.flush();bos.close();}
Android 使用 Retrofit 保存 高德 静态地图API 获取的地图图片相关推荐
- 把通过高德静态地图API获取的地图图片,拼接成一张大地图图片
默认采用: zoom=17&size=1024*1024&scale=2 高德地图api参数.获取的是2048*2048大小的图片,修改参数之后需要调整图片截取和拼接的偏移量 程序中部 ...
- java获取经纬度_java调用高德地图api获取某个位置的经纬度
java调用高德地图api获取经纬度的方法,废话少说,直接上代码: import com.fasterxml.jackson.databind.JsonNode; import com.ning.ht ...
- 调用腾讯地图API、高德地图API 获取当前地理位置、经纬度
调用腾讯地图API.高德地图API 获取当前地理位置.经纬度 web开发中,很多情况下都会需要获取当前位置的经纬度,在网上找了几个不同的地图,最终找到兼容比较好的腾讯地图API 1.调用腾讯地图API ...
- 提取某一个镇的行政边界_高德地图api获取行政边界矢量方法
高德地图api获取行政边界矢量方法 发布时间:2018-09-07 17:51, 浏览次数:2170 , 标签: api 1.获取高德地图web服务key 2.行政区域查询API服务地址: https ...
- 如何在网中使用百度地图API自定义个性化地图
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 百度地图利用位置提供服务器,利用百度地图API获取当前位置信息的实例
利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: var map; var gpsPoint; var baiduPoint; ...
- html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...
vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...
- c语言api获取百度地图,H5调用百度地图API获取地理位置
//获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...
- 使用vue+腾讯地图API GL实现地图选房的功能
使用vue+腾讯地图API GL实现地图选房的功能 背景介绍 公司最近想做一个地图选房的功能,在网上找了很久也没有找到这方面的demo,就只好硬着头皮自己写一个地图选房的功能 腾讯地图的官方文档.首先 ...
最新文章
- 【RAC】RAC 实现IP访问控制
- AMDF换成ACF和AMDF合作算法
- 微信小程序图片选择,预览和删除
- JSP基于JDBC操作MSSQL2008数据库
- scp命令传文件--远程ip加端口号的方式
- UVA10258 ZOJ1837 Contest Scoreboard【结构排序】
- C# matlab中标准差计算方法
- 信号计算机联锁试题,计算机联锁试题.doc
- VUE引入JsBarcode组件异常记录
- 校园网认证破解教程(广某大学)
- 查看Win10序列号
- 2021年中国天眼对外开放,美媒感叹中国崛起的科技实力
- html 滑动拼图验证,vue登录滑动拼图验证
- 微信公众号开发02----自定义菜单及菜单功能实现
- 记录人生第一次收获offer的艰辛
- java将字符串放置到剪切板
- 如何包容青春期叛逆的孩子?
- 手机号码归属地服务[转载]
- 坚强吧,人生还很漫长
- 啥?网易云签到可以领取蓝牙耳机?我用Python实现自动签到给女朋友薅了一个!