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 获取的地图图片相关推荐

  1. 把通过高德静态地图API获取的地图图片,拼接成一张大地图图片

    默认采用: zoom=17&size=1024*1024&scale=2 高德地图api参数.获取的是2048*2048大小的图片,修改参数之后需要调整图片截取和拼接的偏移量 程序中部 ...

  2. java获取经纬度_java调用高德地图api获取某个位置的经纬度

    java调用高德地图api获取经纬度的方法,废话少说,直接上代码: import com.fasterxml.jackson.databind.JsonNode; import com.ning.ht ...

  3. 调用腾讯地图API、高德地图API 获取当前地理位置、经纬度

    调用腾讯地图API.高德地图API 获取当前地理位置.经纬度 web开发中,很多情况下都会需要获取当前位置的经纬度,在网上找了几个不同的地图,最终找到兼容比较好的腾讯地图API 1.调用腾讯地图API ...

  4. 提取某一个镇的行政边界_高德地图api获取行政边界矢量方法

    高德地图api获取行政边界矢量方法 发布时间:2018-09-07 17:51, 浏览次数:2170 , 标签: api 1.获取高德地图web服务key 2.行政区域查询API服务地址: https ...

  5. 如何在网中使用百度地图API自定义个性化地图

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. 百度地图利用位置提供服务器,利用百度地图API获取当前位置信息的实例

    利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: var map; var gpsPoint; var baiduPoint; ...

  7. html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...

    vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...

  8. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

  9. 使用vue+腾讯地图API GL实现地图选房的功能

    使用vue+腾讯地图API GL实现地图选房的功能 背景介绍 公司最近想做一个地图选房的功能,在网上找了很久也没有找到这方面的demo,就只好硬着头皮自己写一个地图选房的功能 腾讯地图的官方文档.首先 ...

最新文章

  1. 【RAC】RAC 实现IP访问控制
  2. AMDF换成ACF和AMDF合作算法
  3. 微信小程序图片选择,预览和删除
  4. JSP基于JDBC操作MSSQL2008数据库
  5. scp命令传文件--远程ip加端口号的方式
  6. UVA10258 ZOJ1837 Contest Scoreboard【结构排序】
  7. C# matlab中标准差计算方法
  8. 信号计算机联锁试题,计算机联锁试题.doc
  9. VUE引入JsBarcode组件异常记录
  10. 校园网认证破解教程(广某大学)
  11. 查看Win10序列号
  12. 2021年中国天眼对外开放,美媒感叹中国崛起的科技实力
  13. html 滑动拼图验证,vue登录滑动拼图验证
  14. 微信公众号开发02----自定义菜单及菜单功能实现
  15. 记录人生第一次收获offer的艰辛
  16. java将字符串放置到剪切板
  17. 如何包容青春期叛逆的孩子?
  18. 手机号码归属地服务[转载]
  19. 坚强吧,人生还很漫长
  20. 啥?网易云签到可以领取蓝牙耳机?我用Python实现自动签到给女朋友薅了一个!

热门文章

  1. 1分钟教你自己动手装系统
  2. 【常见浏览器的UA】
  3. Windows系统设置定时自动重启教程
  4. chromium相关问题集合--持续更新中
  5. 学校智慧书法教室可以带来什么用处?
  6. GreenPlum 浅谈
  7. html层叠样式表,什么叫css层叠样式表?
  8. centos永久修改主机名以及etc/hosts文件详解
  9. Matlab Serial Port学习
  10. 五、ROS使用serial包进行串口通信