当前位置: 首页 > news >正文

Android -- 谷歌地图绘制

引言

集成之后,在项目中肯定要打点,画线(实线,虚线),绘制区域等。

Android 谷歌地图绘制轨迹polyline

在Android中使用Google Maps绘制轨迹polyline的基本步骤如下:

  1. 确保你的项目已经正确集成了Google Play services。

  2. 获取GoogleMap实例。

  3. 使用PolylineOptions添加路线信息。

  4. 在GoogleMap上添加polyline。

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;// 假设你已经有了一个有效的GoogleMap实例googleMap// 一系列坐标点,代表轨迹的路线
LatLng point1 = new LatLng(37.35, -122.0);
LatLng point2 = new LatLng(37.45, -122.0);
LatLng point3 = new LatLng(37.55, -122.0);
LatLng[] points = new LatLng[] {point1, point2, point3};// 创建PolylineOptions来设置线的样式和属性
PolylineOptions polylineOptions = new PolylineOptions().addAll(points).color(Color.BLUE) // 设置线的颜色.width(5f); // 设置线的宽度// 在GoogleMap上添加polyline
Polyline polyline = googleMap.addPolyline(polylineOptions);

确保在你的ActivityFragment中处理Google Map的生命周期事件,例如onResume()onPause(),以保证地图正确显示。

Android 谷歌地图绘制虚线轨迹

在Android中使用Google Maps绘制虚线轨迹,你可以使用Polyline类,并设置合适的样式。以下是一个简单的例子:

  1. 首先,确保你已经在你的项目中集成了Google Maps SDK。

  2. 在你的ActivityFragment中,获取GoogleMap实例。

  3. 使用Polyline类和setGeodesic方法来绘制曲线。

  4. 使用setColorsetWidth方法设置线的颜色和宽度。

  5. 使用setPattern方法设置线的图案,这里我们使用DashPathEffect来创建虚线。

示例代码:

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;import android.graphics.DashPathEffect;
import android.graphics.Color;
import android.graphics.PathEffect;public class MapsActivity extends AppCompatActivity {private GoogleMap mMap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_maps);// 获取GoogleMap实例mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();// 创建一个LatLng列表,表示线的路径List<LatLng> latLngs = new ArrayList<>();latLngs.add(new LatLng(37.77, -122.42));latLngs.add(new LatLng(21.23, -157.8));latLngs.add(new LatLng(-18.14, 178.4));// 创建PolylinePolylineOptions polylineOptions = new PolylineOptions().addAll(latLngs).color(Color.BLUE) // 线的颜色.width(8) // 线的宽度.geodesic(true); // 是否绘制为球面曲线// 设置虚线样式float[] dashWidths = {10f, 10f}; // 虚线和空白区的长度PathEffect pathEffect = new DashPathEffect(dashWidths, 0);polylineOptions.pattern(Arrays.asList(new PatternItem(PatternItem.DOT), new PatternItem(PatternItem.GAP, 20)));// 在地图上添加PolylinePolyline polyline = mMap.addPolyline(polylineOptions);}
}

请确保你的activity_maps.xml布局文件中有一个<fragment>元素用于加载Google Maps,并且你已经处理好了Google Maps的权限和API键。

这段代码会在Google Maps上绘制一条虚线,连接你提供的多个点。你可以通过调整dashWidths数组来改变虚线的样式,比如改变线段的长度或者空白区域的大小。

Android 谷歌地图绘制特定区域

这里拿一个心形举例子

在Android中使用Google Maps绘制一个心形区域,你可以通过自定义Polygon的形状来实现。以下是一个简单的实现示例:

  1. 确保你已经在项目中正确集成了Google Maps SDK。

  2. 获取Google Maps API的密钥,并确保它在AndroidManifest.xml中配置正确。

  3. 在布局文件中添加MapView

  4. 在Activity中,编写代码来初始化和自定义Polygon

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.PolygonOptions;// 假设你已经有一个GoogleMap对象,名为googleMapprivate void drawHeartPolygon(GoogleMap googleMap, LatLngBounds bounds) {// 创建心形的20个顶点ArrayList<LatLng> heartPoints = new ArrayList<>();// ... 填充心形的20个顶点的逻辑 ...// 使用PolygonOptions来设置Polygon的样式PolygonOptions polygonOptions = new PolygonOptions();polygonOptions.addAll(heartPoints);polygonOptions.strokeColor(Color.BLUE); // 边界线条颜色polygonOptions.fillColor(Color.RED); // 填充颜色polygonOptions.strokeWidth(2f); // 边界线条宽度// 将Polygon添加到Google Map上Polygon polygon = googleMap.addPolygon(polygonOptions);// 确保多边形在视图中googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
}

在这个示例中,heartPoints是一个包含心形区域顶点的LatLng列表。你需要根据实际需求自行计算这些顶点的位置。PolygonOptions用于设置多边形的样式,如边界线条颜色、填充颜色、线条宽度等。最后,使用googleMap.addPolygon(polygonOptions)将心形区域添加到Google Maps上。

请注意,你需要自行计算心形区域的20个顶点位置,并填充到heartPoints列表中。此外,googleMap.moveCamera调用用于确保多边形区域在地图视图中可见,bounds是多边形区域的边界,而50是边界与地图视图之间的填充值。

确保在实际应用中处理好生命周期管理和权限请求,例如在onResume中激活地图,在onPause中释放资源等。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL数据库专栏(四)数据库操作
  • 汽车IVI中控OS Linux driver开发实操(二十四):I2C设备驱动的编写
  • Token Compensator:无需重新微调即可改变视觉Transformer的推理成本
  • C++中类和对象(2)
  • python数组和队列
  • leetcode + react学习
  • Kafka系列之:Dead Letter Queue死信队列DLQ
  • webrtc学习笔记1
  • 企业选型指南:8款最佳工资管理系统推荐
  • 使用 Vue 2 搭建大屏可视化系统
  • 安全入门day.02
  • 断言的用途
  • asyncio模块学习
  • webrtc学习笔记2
  • Dubbo服务自动Web化之路
  • 《剑指offer》分解让复杂问题更简单
  • CEF与代理
  • ESLint简单操作
  • express + mock 让前后台并行开发
  • golang 发送GET和POST示例
  • Java面向对象及其三大特征
  • Python学习笔记 字符串拼接
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 多线程事务回滚
  • 聊一聊前端的监控
  • 全栈开发——Linux
  • 找一份好的前端工作,起点很重要
  • ​ArcGIS Pro 如何批量删除字段
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #NOIP 2014#Day.2 T3 解方程
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C++哈希表01)
  • (day6) 319. 灯泡开关
  • (zt)最盛行的警世狂言(爆笑)
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)、python程序--模拟电脑鼠走迷宫
  • (自用)gtest单元测试
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .gitignore文件—git忽略文件
  • .gitignore文件忽略的内容不生效问题解决
  • .NET WPF 抖动动画
  • .NET 表达式计算:Expression Evaluator
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net 执行Linux下多行shell命令方法
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET中两种OCR方式对比
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?