谷歌地图 | 与 Android 版导航 SDK 集成的最佳实践

谷歌最近宣布了导航 SDK,它可以让您将熟悉的 Google 地图逐向导航体验无缝集成到您的 Android 和 iOS 应用程序中。

这篇博文概述了一些最佳实践,您可以使用这些实践为您的 Android 应用程序使用导航 SDK 构建流畅、一致且可靠的导航体验。

与导航地图交互

与 Navigation SDK 集成时,您可以使用SupportNavigationFragment( 的包装器)NavigationView,也可以直接与 交互NavigationView。在大多数情况下,我们建议使用SupportNavigationFragmentNavigationView处理SupportNavigationFragment生命NavigationView周期回调,因此您无需自行管理它们。但是,如果您确实需要与 交互NavigationView,请谨慎管理生命周期方法和事件。

最佳实践

  • 尽可能使用SupportNavigationFragment而不是。NavigationView
  • 如果使用NavigationView,则在调用生命周期方法时使用严格排序。
  • 如果使用NavigationView,则从活动或片段调用生命周期事件,而不是同时从两者调用。

有关更多信息,请参阅导航 SDK 开发人员文档中的导航地图交互。

管理导航通知

无论用户是否设置了目的地,导航 通知都会在用户导航时显示,有助于确保位置更新的准确性。应用必须管理 Android 对从后台启动前台服务和从后台访问位置的限制,以最大限度地提高位置准确性、最大限度地减少电池消耗并避免内存泄漏。

最佳实践

  • 向应用程序用户请求“始终允许”位置权限。
  • 确保正确清理听众以清除导航通知。
  • 重新调用NavigationApi#initForegroundServiceManager方法时,先调用NavigationApi#clearForegroundServiceManager

有关更多信息,请参阅导航 SDK 开发人员文档中的后台位置使用情况。

GoogleMap与物体交互

除了允许您向应用添加导航体验之外,Android 版导航 SDK 还包含来自Android 版地图 SDK的非导航地图功能。非导航地图可通过GoogleMap类访问。APIGoogleMap允许您创建自定义地图体验,包括绘制多边形、自定义图标等。在GoogleMap应用中实现功能时,务必将非导航地图与导航地图分开,并管理GoogleMap与导航体验相关的生命周期。

最佳实践

  • GoogleMap在与导航体验不同的地图实例上实现功能。
  • 用于getMapAsync获取GoogleMap实例。

有关更多信息,请参阅导航 SDK 开发者文档中的GoogleMap 交互。

清理实例

清除不再需要的实例和会话对于避免内存泄漏和其他问题非常重要。特别是,一定要清除导航目的地并清理 GoogleMap 对象上的地图元素。

最佳实践

  • 使用Navigator#clearDestinations以及Navigator#cleanup导航会话何时完成。
  • 清理GoogleMap不再需要的元素。

有关更多信息,请参阅导航 SDK 开发人员文档中的实例清理。

其他建议

除了上面描述的实施最佳实践之外,以下建议还可以帮助确保您及时了解最新的导航 SDK 开发情况:

  • 使用 Maven 进行导航 SDK 构建
  • 使用最新的可用导航 SDK 版本。
  • 随时了解强制性服务公告。
  • 不要使用已弃用的方法。
  • 在 GitHub 上关注我们的演示应用程序。

开始与导航 SDK 集成。 查看导航 SDK API 文档和参考。您可以遵循这些最佳实践,帮助确保您的用户获得流畅、可靠的导航体验。

如果您想了解更多谷歌地图的新功能套件或者想立即集成到您的应用中,请立即联系谷歌地图一级代理商 Cloud Ace云一

电话:0755-26410916 邮箱:zixun@cloud-ace.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统安装软件的4种方式【源码配置编译安装、yum安装、rpm包安装、二进制软件包安装(.rpm/.tar.gz/.tgz/.bz2)】

一.源码安装 linux安装软件采用源码安装灵活自由,适用于不同的平台,维护也十分方便。 (一)源码安装流程  源码的安装一般由3个步骤组成: 1.配置(configure) Configure是一个可执行脚本…

5586 直播获奖(live)

经验值:1200 时间限制:1000毫秒 内存限制:256MB 全国2020CSP-J普及组试题 不许抄袭,一旦发现,直接清空经验! 题目描述 Description NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个…

YOLOv11在目标检测中的应用及其与PaddleDetection的对比

近年来,目标检测模型在诸如自动驾驶、安全监控等应用中发挥了关键作用。众多模型中,YOLO(You Only Look Once) 系列凭借其在速度和精度之间的良好平衡脱颖而出。YOLOv11 作为该系列的最新版本之一,凭借其多项创新&…

Vue.js 入门教程

Vue.js 入门教程 一、引言 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。与其他重量级框架不同,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易上手,同时也很容易与其他库或已有项目整合。本文将引导…

FPGA秋招必看基础 | FPGA设计流程

关注👆 望森FPGA 👆 查看更多FPGA资讯 这是望森的第 30 期分享 作者 | 望森 来源 | 望森FPGA 目录 摘要 1 明确需求、设计系统架构 2 RTL 输入 3 功能仿真(Behavioral Simulation) 4 综合(Synthesis)…

Qgis 开发初级 《符号化》

本章主要简介Qgis 的矢量图层的符号化。Qgis的符号化具体作用于每个图层,图层通过具体的方法设置符号化样式。 1、QgsFeatureRenderer Qgs的符号化类主要是QgsFeatureRenderer,这是一个抽象类,它派生出了许多类,如下所示。常用的…

self-supervised learning(BERT和GPT)

1芝麻街与NLP模型 我們接下來要講的主題呢叫做Self-Supervised Learning,在講self-supervised learning之前呢,就不能不介紹一下芝麻街,為什麼呢因為不知道為什麼self-supervised learning的模型都是以芝麻街的人物命名。 因為Bert是一個非常…

使用Bert+BiLSTM+CRF训练 NER任务

使用的数据集在这里E-Commercial NER Dataset / 电商NER数据集_数据集-阿里云天池 针对面向电商的命名实体识别研究,我们通过爬取搜集了淘宝商品文本的标题,并标注了4大类,9小类的实体类别。具体类型及实体数量如下 针对面向电商的命名实体…

iptables防火墙总结

iptables防火墙总结 四表五链 P 默认策略,-p 协议 出口防火墙,默认配置,使用Forword,采用-P 例题:设置iptables防火墙默认不允许任何数据包进入,相应命令是: Iptables -t filter -P FORWORD -j…

undertow服务器初始化

springboot整合undertow服务器的源码从老生常谈的createWebServer方法谈起。spring会在生成所有bean后到创建web容器,此时会到容器找到ServletWebServerFactory接口bean,spring会根据引入的框架确定生成的ServletWebServerFactory,我们在mave…

【数据结构】五分钟自测主干知识(十一)

上回(半年前)我们讲了二叉树,如果我们要找到二叉树某序遍历下的前驱和后继,我们需要对其作动态遍历求得,比较费时;或者给每个结点增加两个指针域prior和next,但比较费空间。 有没有既能省时间&…

docker部署SQL审核平台Archery

1、概述 Archery 是一个开源的 SQL 审核平台,专为数据库的 SQL 运维和管理而设计,广泛应用于企业的数据库运维工作中。其主要功能是帮助数据库管理员和开发人员实现 SQL 审核、SQL 执行、在线执行、查询、工单管理、权限控制等数据库管理相关的操作。 Archery 的主要功能包括…

网络地址转换——NAT技术详解

网络地址转换——NAT技术详解 一、引言 随着互联网的飞速发展,IP地址资源日益紧张。为了解决IP地址资源短缺的问题,NAT(Network Address Translation,网络地址转换)技术应运而生。NAT技术允许一个私有IP地址的网络通…

为什么我钟情于JPA:优雅数据访问的背后秘密

在Java开发的世界中,选择合适的数据访问框架不仅影响代码的可读性和维护性,更直接关系到项目的成败。虽然MyBatis及其衍生框架在灵活性和性能调优方面有其独特优势,但我更倾向于使用Java持久化API(JPA)。本文将探讨我为…

【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。 1.…

Openlayers高级交互(2/20):清除所有图层的有效方法

Openlayers项目中,经常会放置很多的图层,在业务操作的时候,会做出删除所有图层的行为。这里面给出了一个详细的方法,能够有效的解决 清除所有图层的问题。 效果图 专栏名称内容介绍Openlayers基础实战 (72篇)专栏提供73篇文章,为小白群体提供基础知识及示例演示,能解决…

[软件工程]—桥接(Brige)模式与伪码推导

桥接(Brige)模式与伪码推导 1.基本概念 1.1 动机 由于某些类型的固有的实现逻辑,使它们具有两个变化的维度,乃至多个维度的变化。如何应对这种“多维度的变化”?如何利用面向对象技术是的类型可以轻松的沿着两个乃至…

022_matrix_dancing_in_Matlab中求解一个超简单的矩阵问题

矩阵体操 首先,可以复习一下向量、矩阵和索引的基础知识。 向量约定矩阵约定矩阵索引 一般而言,我们利用进行计算大概就是以下的步骤: #mermaid-svg-UovF0Uldf5XxntJi {font-family:"trebuchet ms",verdana,arial,sans-serif;fo…

MFC实现以不规则PNG图片作为窗口背景

效果图 显示的不规则PNG图片 头文件 #pragma once #include <gdiplus.h> #pragma comment (lib,"Gdiplus.lib")// CShowBack 对话框class CShowBack : public CDialogEx {DECLARE_DYNAMIC(CShowBack) public:CShowBack(CWnd* pParent nullptr); // 标准构…

C++学习路线(二十二)

构造函数 构造函数作用 在创建一个新的对象时&#xff0c;自动调用的函数&#xff0c;用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。 构造函数特点 1.自动调用(在创建新对象时&#xff0c;自动调用) 2.构造函数的函数名&#xff0c;和类名相同 3.构造函数…