问题:百度地图绘制圆形,圆形半径可随进度拖动条发生改变

思路:圆形本身是一个覆盖物,可参考百度地图Demo中的OverlayDemo.java这个类进行实现。完成画圆之后,圆形半径如何随着进度条的拖动进行变化?进度条与画圆方法联动,随着进度条的拖动首先清除掉上次绘制的圆形重新绘制。

效果图:

实现代码Activity:

package baidumapsdk.demo.map;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.support.annotation.Nullable;

import android.util.Log;

import android.widget.SeekBar;

import android.widget.Toast;

import com.baidu.location.BDLocation;

import com.baidu.location.BDLocationListener;

import com.baidu.location.LocationClient;

import com.baidu.location.LocationClientOption;

import com.baidu.mapapi.map.BaiduMap;

import com.baidu.mapapi.map.CircleOptions;

import com.baidu.mapapi.map.MapStatus;

import com.baidu.mapapi.map.MapStatusUpdate;

import com.baidu.mapapi.map.MapStatusUpdateFactory;

import com.baidu.mapapi.map.MapView;

import com.baidu.mapapi.map.MyLocationData;

import com.baidu.mapapi.map.OverlayOptions;

import com.baidu.mapapi.map.Stroke;

import com.baidu.mapapi.model.LatLng;

import baidumapsdk.demo.R;

/**

* 描述类的功能、用途、现存BUG,以及其它别人可能感兴趣的介绍.

* created by: .

* version: 2017/12/25 14:15.

*/

public class ZTestDemo extends Activity {

private static final String TAG = "ZTestDemo";

private Context mContext;

private MapView mMapView;

public MyLocationListener myListener = new MyLocationListener();

BaiduMap mBaiduMap;

LocationClient mLocClient;

boolean isFirstLoc = true;

boolean isLocationClientStop = false;

private SeekBar seekBar;

private double latitude;//维度

private double longitude;//精度

private int mRadius = 2500;//半径

LatLng ll = null;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mContext = this;

setContentView(R.layout.layout_ztestdemo);

seekBar = (SeekBar) findViewById(R.id.seekBar);

mMapView = (MapView) findViewById(R.id.bmapView);

mBaiduMap = mMapView.getMap();

mBaiduMap.setMyLocationEnabled(true);

mLocClient = new LocationClient(mContext);

mLocClient.registerLocationListener(myListener);

LocationClientOption option = new LocationClientOption();

option.setOpenGps(true);

option.setCoorType("bd09ll");//bd09LL

option.setScanSpan(1000);

mLocClient.setLocOption(option);

mLocClient.start();

mBaiduMap.setOnMapStatusChangeListener(new BaiduMap.OnMapStatusChangeListener() {

//地图状态改变前

@Override

public void onMapStatusChangeStart(MapStatus mapStatus) {

Log.i(TAG, "地图状态改变前");

}

//地图状态改变后

@Override

public void onMapStatusChange(MapStatus mapStatus) {

Log.i(TAG, "地图状态改变后");

}

//地图状态改变时

@Override

public void onMapStatusChangeFinish(MapStatus mapStatus) {

Log.i(TAG, "地图状态改变时");

}

});

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

Log.e("seekBar", "--" + progress);

mBaiduMap.clear();

//画圆

drawCircle( progress);

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

Log.e("seekBar", "开始滑动!");

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

Log.e("seekBar", "停止滑动!");

Toast.makeText(mContext, "半径:" + seekBar.getProgress() + "米", Toast.LENGTH_SHORT).show();

}

});

}

public class MyLocationListener implements BDLocationListener {

@Override

public void onReceiveLocation(BDLocation location) {

// TODO Auto-generated method stub

if (location == null || isLocationClientStop)

return;

MyLocationData locData = new MyLocationData.Builder()

.accuracy(location.getRadius())

.direction(100)

.latitude(location.getLatitude())

.longitude(location.getLongitude())

.build();

mBaiduMap.setMyLocationData(locData);

latitude = location.getLatitude();

longitude = location.getLongitude();

if (isFirstLoc) {

isFirstLoc = false;

//定位点坐标

ll = new LatLng(latitude, longitude);

//设置地图中心点和缩放级别

MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 13);

//以动画方式更新地图状态,动画耗时 300 ms

mBaiduMap.animateMapStatus(u);

//画圆,主要是这里

OverlayOptions ooCircle = new CircleOptions().fillColor(0x384d73b3)

.center(ll).stroke(new Stroke(3, 0x784d73b3))

.radius(mRadius);

mBaiduMap.addOverlay(ooCircle);

}

}

}

private void drawCircle( int mRadius) {

// if (isFirstLoc) {

// isFirstLoc = false;

//画圆,主要是这里

OverlayOptions ooCircle = new CircleOptions().fillColor(0x384d73b3)

.center(ll).stroke(new Stroke(3, 0x784d73b3))

.radius(mRadius);

mBaiduMap.addOverlay(ooCircle);

// }

}

@Override

public void onDestroy() {

// mLocClient.stop();

// mBaiduMap.setMyLocationEnabled(false);

// mMapView = null;

mMapView.onDestroy();

super.onDestroy();

}

@Override

public void onPause() {

super.onPause();

mMapView.onPause();

}

@Override

public void onResume() {

super.onResume();

mMapView.onResume();

}

}

代码实现XML:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/bmapView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

android:id="@+id/seekBar"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="40dp"

android:progress="2500"

android:max="5000" />

提示:代码需要优化,我已优化完成。如果各位看到这边博客的朋友要用的话可以思考一下自己优化的方式。

android+动态地图+效果图,Android百度地图绘制圆形,圆形半径可动态变化相关推荐

  1. Android中级篇之百度地图SDK v3.5.0-一步一步带你仿各大主流APP地图定位移动选址功能

    from: http://blog.csdn.net/y1scp/article/details/49095729 定位+移动选址 百学须先立志-学前须知: 我们经常在各大主流APP上要求被写上地址, ...

  2. Android使用第三方SDK——百度地图

    Android使用第三方SDK--百度地图 第一次用百度地图是在去年的8月中旬吧,当时是参加一个比赛,老师要求使用地图,然后就是百度,各种视频网站一顿搜啊(当时Android还没入门,就知道CV),最 ...

  3. 【Android】APP嵌入百度地图骑行导航一直初始化引擎失败解决办法

    [Android] APP嵌入百度地图骑行导航一直初始化引擎失败解决办法 最近手头上有个需求需要做骑行导航 首先百度地图开放平台http://lbsyun.baidu.com/ 按提示找到Androi ...

  4. Android调用跳转百度地图、高德地图、腾讯地图进行目的地导航

    Android App跳转百度地图.高德地图.腾讯地图进行目的地导航. 先放上百度.高德.腾讯地图调起API文档地址,有些参数不懂可以参考. 百度地图:http://lbsyun.baidu.com/ ...

  5. 从Eclipse转战Android Studio坑之——百度地图

    相信大家都知道如果一个项目做到一半忽然要从Eclipse转战Android Studio那肯定不太容易 ,特别是在项目引用较多第三方平台的时候(因为很多第三方平台的SDK在两个开发工具上的导入和引用方 ...

  6. 百度地图绘制实时路线以及最短线路规划

    如何使用百度地图绘制实时路线以及最短线路规划 最近在做百度地图的实时路线绘制,发现一些问题,比如由于定位漂移带来的路线绘制偏差,还有由于定位漂移,导致人未走动时,也会绘制路线等.百度鹰眼的线路纠偏个人 ...

  7. 百度地图-绘制工具以及覆盖物的简单使用

    这几天重拾了地图相关的功能,做一个小小的总结. 本文的示例的后端为flask框架,前端使用了bootstrap和jQuery以及百度地图API. 接下来是展示部分. 地图上的覆盖物表示高校所处的位置, ...

  8. Python调用百度地图绘制热力图密钥问题

    首先奉上效果图: 问题描述: 因工作需求,必须用百度地图绘制热力图:发现因关于百度地图密钥的使用问题如下: 1.抓取经纬度信息状态码200: {"status":200," ...

  9. vue结合百度地图绘制工具遇到的问题及解决方案(多边形编辑状态下形状显示不全、marker点添加事件无效)

    vue如何引入百度地图绘制工具 百度地图绘制工具示例 http://developer.baidu.com/map/jsdemo.htm#f0_7 百度地图绘制工具api文档 http://api.m ...

最新文章

  1. vps建网站python_VPS配置python web环境真吐血
  2. php case语句 分号
  3. 键盘上每个键作用!!!
  4. 北大邮箱收件服务器,北京大学微电子学研究院邮件系统
  5. 一分钟深入Mysql的意向锁——《深究Mysql锁》
  6. 计算机公共基础知识教材,国家计算机二级考试公共基础知识教材
  7. JAVA中集合输出的四种方式
  8. STM32F103_EXTI外部中断
  9. Python扩展库psutil用法精要
  10. Codeforces Round #275 (Div. 2) D
  11. 软件介绍:搜索工具 Listary
  12. AI制作ICON流程
  13. SecureCRT连接交换机Console口
  14. C++(17):any
  15. Linux命令删除find,浅谈Linux下通过find命令进行rm文件删除的小技巧
  16. 通过STM32 stlink utility工具对ST-LINK芯片信息进行读取和升级以及SWD烧录媒介
  17. (11)RabbitMQ的mandatory、immediate和ReturnListener
  18. 关于Java中抽象类和接口的一点思索
  19. 郑大跨专业考研计算机,多所985/211大学计算机考研禁止跨考!新乡寄宿考研
  20. Python基础重点复习(4)

热门文章

  1. Linux vsyscall和vDSO加速系统调用
  2. 深入理解 Cilium 的 eBPF(XDP)收发包路径:数据包在Linux网络协议栈中的路径
  3. The Vector Packet Processor (VPP)的安装
  4. shell高级脚本:“秒”转换为“时-分-秒”;ping
  5. php如何从mongo获取视频文件,使用mongodb对文件(图片、音频、视频)的存储、读取操作...
  6. python多线程下载_python3 多线程下载
  7. tm图像融合编程matlab,遥感习题
  8. android连接django(乱哄哄的)
  9. python utc时间如何取整_Python和Pandas:如何在不同的分辨率上取整unix时间戳(utc):1min5min15min30min1d?...
  10. OpenShift 4 概念 - OpenShift是如何通过ImageStream访问Image的