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

Android 中使用高德地图实现根据经纬度信息画出轨迹、设置缩放倍数并定位到轨迹路线的方法

一、添加依赖和权限

在项目的build.gradle文件中添加高德地图的依赖:

implementation 'com.amap.api:maps:latest_version'

在AndroidManifest.xml文件中添加必要的权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

二、布局文件

在布局文件中添加一个com.amap.api.maps.MapView用于显示地图:

<com.amap.api.maps.MapViewandroid:id="@+id/mapView"android:layout_width="match_parent"android:layout_height="match_parent" />

三、Activity 代码

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.Polyline;
import com.amap.api.maps.model.PolylineOptions;import java.util.ArrayList;
import java.util.List;public class MapActivity extends AppCompatActivity {private MapView mapView;private AMap aMap;private List<LatLng> latLngList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_map);mapView = findViewById(R.id.mapView);mapView.onCreate(savedInstanceState);if (aMap == null) {aMap = mapView.getMap();}latLngList = new ArrayList<>();// 假设的经纬度数据,实际中可以从其他地方获取latLngList.add(new LatLng(39.9087, 116.3975));latLngList.add(new LatLng(39.9088, 116.3976));latLngList.add(new LatLng(39.9089, 116.3977));}@Overrideprotected void onResume() {super.onResume();mapView.onResume();drawPolylineAndSetZoom();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}private void drawPolylineAndSetZoom() {Polyline polyline = aMap.addPolyline(new PolylineOptions().addAll(latLngList).width(5).color(ContextCompat.getColor(this, R.color.polyline_color)));LatLngBounds bounds = getBoundsFromLatLngList(latLngList);if (bounds!= null) {aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));}}private LatLngBounds getBoundsFromLatLngList(List<LatLng> latLngList) {if (latLngList == null || latLngList.isEmpty()) {return null;}double minLat = Double.MAX_VALUE;double minLng = Double.MAX_VALUE;double maxLat = Double.MIN_VALUE;double maxLng = Double.MIN_VALUE;for (LatLng latLng : latLngList) {minLat = Math.min(minLat, latLng.latitude);minLng = Math.min(minLng, latLng.longitude);maxLat = Math.max(maxLat, latLng.latitude);maxLng = Math.max(maxLng, latLng.longitude);}return new LatLngBounds.Builder().include(new LatLng(minLat, minLng)).include(new LatLng(maxLat, maxLng)).build();}
}

在上述代码中,首先添加了高德地图依赖和必要的权限。在布局文件中添加了MapView,在Activity中初始化地图并添加了一些假设的经纬度数据用于绘制轨迹。drawPolylineAndSetZoom方法用于绘制轨迹并根据轨迹设置地图的缩放倍数,同时定位到轨迹路线。

http://www.lryc.cn/news/444828.html

相关文章:

  • LeetCode从入门到超凡(二)递归与分治算法
  • superset 解决在 mac 电脑上发送 slack 通知的问题
  • SQL_UNION
  • 高等代数笔记(2)————(弱/强)数学归纳法
  • 模拟自然的本质:与IBM量子计算研究的问答
  • Robot Operating System——带有时间戳和坐标系信息的多边形信息
  • 内网穿透(当使用支付宝沙箱的时候需要内网穿透进行回调)
  • Contact Form 7最新5.9.8版错误修复方案
  • 【第十一章:Sentosa_DSML社区版-机器学习之分类】
  • kafka3.8的基本操作
  • 如何检测并阻止机器人活动
  • 《linux系统》基础操作
  • EMT-LTR--学习任务间关系的多目标多任务优化
  • MySQL record 08 part
  • 打造以太坊数据监控利器:InfluxDB与Grafana构建Geth可视化分析平台
  • 对onlyoffice进行定制化开发
  • 使用llama.cpp 在推理MiniCPM-1.2B模型
  • 分布式环境中,接口超时重试带来的的幂等问题如何解决?
  • 设计一个推荐系统:使用协同过滤算法
  • Linux 基本指令(二)
  • Facebook的用户隐私保护:从争议到革新
  • 计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23
  • C++(学习)2024.9.20
  • 让AI激发创作力:OpenAI分享5位专业作家利用ChatGPT写作的案例技巧
  • UEFI EDK2框架学习 (一)
  • 基于 BERT 的自定义中文命名实体识别实现
  • 中秋节特别游戏:给玉兔投喂月饼
  • python pdf转word或excel
  • GNU链接器(LD):位置计数器(.)功能及实例解析
  • 学习记录:js算法(四十三):翻转二叉树