android 高德静态地图api,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 observable = locationImageRequest.getImage(location,zoom,size,markers,key,scale);

// 步骤7:发送网络请求

observable.subscribeOn(Schedulers.io()) // 在IO线程进行网络请求

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new DisposableObserver() {

@Override

public 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();

}

}

@Override

public void onError(Throwable e) {

}

@Override

public void onComplete() {

}

});

}

4、创建LocationImageService

public interface LocationImageService {

@GET("v3/staticmap")

Observable 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();

}

本文地址:https://blog.csdn.net/wl724120268/article/details/107403034

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值