遇到一需求:在高德地图上绘制多边形区域

还能咋样,翻一翻 高德地图sdk参考手册,发现了这样一个方法:【addPolygon(PolygonOptions options)】

public final Polygon addPolygon(PolygonOptions options)
在地图上添加一个多边形(polygon)对象。

对主要类进行了解:【PolygonOptions】

com.amap.api.maps.model
类 PolygonOptionsjava.lang.Object
com.amap.api.maps.model.PolygonOptions
所有已实现的接口:
android.os.Parcelablepublic final class PolygonOptions
extends java.lang.Object
implements android.os.Parcelable
多边形覆盖物选项类
 // 模拟数据private void initLatLngData() {mLatLnglist = new ArrayList<>();mLatLnglist.add(new LatLng(23.103171, 113.232999));mLatLnglist.add(new LatLng(23.095631, 113.224331));mLatLnglist.add(new LatLng(23.091131, 113.240166));mLatLnglist.add(new LatLng(23.099539, 113.241797));}// 绘制区域private void addArea(int strokeColor, int fillColor, List<LatLng> latLnglist) {// 定义多边形的属性信息PolygonOptions polygonOptions = new PolygonOptions();// 添加多个多边形边框的顶点for (LatLng latLng : latLnglist) {polygonOptions.add(latLng);}// 设置多边形的边框颜色,32位 ARGB格式,默认为黑色polygonOptions.strokeColor(strokeColor);// 设置多边形的边框宽度,单位:像素polygonOptions.strokeWidth(10);// 设置多边形的填充颜色,32位ARGB格式polygonOptions.fillColor(fillColor); // 注意要加前两位的透明度// 在地图上添加一个多边形(polygon)对象mAmap.addPolygon(polygonOptions);}

期间遇到一个问题:默认定位为紫禁城,加上如果定位到区域的某一地点,又不能完全显示整块区域,所以找到了这么一个方法【addMarkers(java.util.ArrayList options, boolean moveToCenter】

public final java.util.ArrayList<Marker> addMarkers(java.util.ArrayList<MarkerOptions> options, boolean moveToCenter)
在地图上添一组图片标记(marker)对象,
并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示。
参数:
options - 多个markerOptions对象,它们分别定义了对应marker的属性信息。
moveToCenter - 是否改变地图状态,默认为false。

对主要类进行了解:【MarkerOptions】

com.amap.api.maps.model
类 MarkerOptionsjava.lang.Object
com.amap.api.maps.model.MarkerOptions
所有已实现的接口:
android.os.Parcelable
private void addMarker(boolean visible, List<LatLng> latLnglist) {ArrayList<MarkerOptions> options = new ArrayList<>();for (LatLng latLng : latLnglist) {// 在地图上添一组图片标记(marker)对象,并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示MarkerOptions markerOptions = new MarkerOptions();// 设置Marker覆盖物的位置坐标。Marker经纬度坐标不能为Null,坐标无默认值markerOptions.position(latLng);// 设置Marker覆盖物是否可见markerOptions.visible(visible);// 设置Marker覆盖物是否可拖拽markerOptions.draggable(visible);options.add(markerOptions);}// 在地图上添一组图片标记(marker)对象,并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示mAmap.addMarkers(options, true);}

最终代码:

/*** @author 小侨* @time 2018/1/31  16:17* @desc 区域绘制图*/public class RegionalDrawingActivity extends AppCompatActivity {private MapView mMapView;private AMap mAmap;private List<LatLng> mLatLnglist1;private List<LatLng> mLatLnglist2;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_regionaldrawing);//获取地图控件引用mMapView = (MapView) findViewById(R.id.regional_drawing_map);//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图mMapView.onCreate(savedInstanceState);// 此方法须覆写,虚拟机需要在很多情况下保存地图绘制的当前状态。//初始化地图控制器对象if (mAmap == null) {mAmap = mMapView.getMap();}initLatLngData1();initLatLngData2();addArea(Color.parseColor("#050505"), Color.parseColor("#55FBEFDD"), mLatLnglist1);addArea(Color.parseColor("#00ff00"), Color.parseColor("#5500EFDD"), mLatLnglist2);addMarker(false,mLatLnglist1);}private void initLatLngData1() {mLatLnglist1 = new ArrayList<>();mLatLnglist1.add(new LatLng(23.103171, 113.232999));mLatLnglist1.add(new LatLng(23.095631, 113.224331));mLatLnglist1.add(new LatLng(23.091131, 113.240166));mLatLnglist1.add(new LatLng(23.099539, 113.241797));}private void initLatLngData2() {mLatLnglist2 = new ArrayList<>();mLatLnglist2.add(new LatLng(23.104197, 113.223386));mLatLnglist2.add(new LatLng(23.091526, 113.220854));mLatLnglist2.add(new LatLng(23.094013, 113.251195));mLatLnglist2.add(new LatLng(23.105066, 113.247762));}private void addArea(int strokeColor, int fillColor, List<LatLng> latLnglist) {// 定义多边形的属性信息PolygonOptions polygonOptions = new PolygonOptions();// 添加多个多边形边框的顶点for (LatLng latLng : latLnglist) {polygonOptions.add(latLng);}// 设置多边形的边框颜色,32位 ARGB格式,默认为黑色polygonOptions.strokeColor(strokeColor);// 设置多边形的边框宽度,单位:像素polygonOptions.strokeWidth(10);// 设置多边形的填充颜色,32位ARGB格式polygonOptions.fillColor(fillColor); // 注意要加前两位的透明度// 在地图上添加一个多边形(polygon)对象mAmap.addPolygon(polygonOptions);}private void addMarker(boolean visible, List<LatLng> latLnglist) {ArrayList<MarkerOptions> options = new ArrayList<>();for (LatLng latLng : latLnglist) {// 在地图上添一组图片标记(marker)对象,并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示MarkerOptions markerOptions = new MarkerOptions();// 设置Marker覆盖物的位置坐标。Marker经纬度坐标不能为Null,坐标无默认值markerOptions.position(latLng);// 设置Marker覆盖物是否可见markerOptions.visible(visible);// 设置Marker覆盖物是否可拖拽markerOptions.draggable(visible);options.add(markerOptions);}// 在地图上添一组图片标记(marker)对象,并设置是否改变地图状态以至于所有的marker对象都在当前地图可视区域范围内显示mAmap.addMarkers(options, true);}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图mMapView.onDestroy();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制mMapView.onPause();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态mMapView.onSaveInstanceState(outState);}
}

概览 http://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html
ZhangZeQiao/DemoApp · GitHub

高德地图 SDK 的应用 01:绘制多边形区域图相关推荐

  1. vue人员轨迹_在vue中高德地图引入和轨迹的绘制的实现

    高德地图引入和轨迹的绘制 1.第一步 vue中使用cdn引入高德地图,并在main.js中进行全局配置.(百度上有高德地图引入与配置方法,这里就不详细介绍): 1)npm install vue-am ...

  2. vue是否可以做行车轨迹_在vue中高德地图引入和轨迹的绘制的实现

    高德地图引入和轨迹的绘制 1.第一步 vue中使用cdn引入高德地图,并在main.js中进行全局配置.(百度上有高德地图引入与配置方法,这里就不详细介绍): 1)npm install vue-am ...

  3. 【iOS】—— 高德地图SDK基础使用

    最近稍微学了学iOS调用高德的SDK,就随便做做笔记.注意:本篇博客基于高德地图SDK的3D地图来写的,若使用的是2D地图可能有的方法可能有所不同,比如自定义定位蓝点之类的. 一.准备工作: 具体的准 ...

  4. 【iOS】高德地图SDK的详细使用

    文章目录 前言 需要用到的库 显示基础地图 地图定位 位置搜索 路线规划 前言 关于如何调用高德地图的SDK,项目前需要下载哪些库,还有正式开始写项目前的一些注意事项可见这篇博客[iOS]调用百度.高 ...

  5. 高德地图sdk设置marker并且将设置为地图中心

    高德地图sdk设置marker并且将设置为地图中心,直接在官方demo里改,授权key需要改为自己的. <!doctype html> <html> <head>& ...

  6. Android开发-使用高德地图SDK实现仿钉钉打卡的功能

    前 言 LBS(基于地理位置服务)是当前移动互联网大部分应用不可或缺的功能,基于地理位置服务的Android平台的开发是主要用于Android系统作为载体,我们可以利用定位出的位置进行许多丰富多彩的操 ...

  7. flutter引入高德地图_Flutter笔记-调用原生IOS高德地图sdk

    一.前言 2017年底因公司业务组合部门调整,新的团队部分维护的项目用React Native技术混合开发.为适应环境变化,开启疯狂RN学习之旅,晚上回来啃资料看视频.可能由于本身对RN技术体验不感冒 ...

  8. [iOS]高德地图SDK开发--准备篇

    本文是对高德地图SDK使用的总结,对于高德地图不做过多介绍,可直接登录其官网开放平台进行了解; PS: 这里主要是讲解地图使用的准备工作,最后,以显示地图并定位到当前位置来验证;对于其他的使用,可参看 ...

  9. iOS调用高德地图SDK

    准备工作: 安装CocoaPods 使用下载第三方库相同的方法下载SDK 方法如下: (1)打开终端,cd 文件路径 进入到所创建的项目文件中 (2)输入pod init为该项目创建Podfile文件 ...

最新文章

  1. C语言程序设计 细节总结(第10-11章 文件、预处理命令)
  2. python截图保存到内存卡_Python画月饼,云上过中秋,天池Python入门案例系列赛开启...
  3. 写工作总结的要领是什么?
  4. haroopad夜间模式与数学公式显示
  5. 13点建议顺利通过JAVA面试【转载】
  6. php中得到复选框的数据的代码,表单复选框向PHP传输数据的代码
  7. Vertex and Fragment Shader
  8. AI算法连载08:统计学之贝叶斯
  9. 读书随笔:The Book of Why——CHAPTER 4~10
  10. 又拍网架构-又一个用到python的网站(转载)
  11. linux格式化nfs,NFS协议详解与配置实现
  12. nginx启动报错 :Failed to start The nginx HTTP and reverse prox...er.
  13. 误删数据库---恢复
  14. scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化
  15. 《大型多人在线游戏开发》读书笔记
  16. GoLang之Go 语言与鸭子类型的关系(1)
  17. 大数据和人工智能属于什么专业 - 学大数据和人工智能出来做什么
  18. tf.maximum
  19. 基于51单片机的指纹锁设计(附带密码解锁)
  20. gazebo可以另存为world

热门文章

  1. java基本微信小程序的快递代收派送系统 uniapp小程序
  2. NEFU 大一寒假训练十二(set)2020.02.18
  3. 小试X64 inline HOOK,hook explorer.exe---CreateProcessInternalW监视进程创建
  4. 达梦8在VMware虚拟机麒麟系统下命令安装
  5. Python入门习题大全——大号T恤
  6. Java 静态static
  7. OKR教练:OKRs-E如何帮你落地OKR
  8. 微信小程序|使用小程序制作一个时间管理小工具
  9. JVM常见命令行及图形工具
  10. HDUOJ 6608 Fansblog