华为HarmonyOS地图服务 11 - 如何在地图上增加点注释?

场景介绍

本章节将向您介绍如何在地图的指定位置添加点注释以标识位置、商家、建筑等,并可以通过信息窗口展示详细信息。

点注释支持功能:

  • 支持设置图标、文字、碰撞规则等。
  • 支持添加点击事件。

PointAnnotation有默认风格,同时也支持自定义。由于内容丰富,以下只展示一些基础功能的使用,详细内容可分参见接口文档。

cke_3725.jpeg

接口说明

添加点注释功能主要由PointAnnotationParams、addPointAnnotation和PointAnnotation提供,更多接口及使用方法请参见接口文档。

接口名

描述

PointAnnotationParams

点注释相关属性。

addPointAnnotation(params: mapCommon.PointAnnotationParams): Promise<PointAnnotation>

在地图上添加点注释。

PointAnnotation

点注释,支持更新和查询相关属性。

开发步骤

添加点注释

  1. 导入相关模块。
    import { MapComponent, mapCommon, map } from '@kit.MapKit';
    import { AsyncCallback } from '@kit.BasicServicesKit';

  2. 添加点注释,在Callback方法中创建初始化参数并新建点注释。
    @Entry
    @Component
    struct PointAnnotationDemo {
    private mapOption?: mapCommon.MapOptions;
    private mapController?: map.MapComponentController;
    private callback?: AsyncCallback<map.MapComponentController>;
    private pointAnnotation?: map.PointAnnotation;
    aboutToAppear(): void {
    this.mapOption = {
    position: {
    target: {
    latitude: 32.020750,
    longitude: 118.788765
    },
    zoom: 14
    }
    };
    this.callback = async (err, mapController) => {
    if (!err) {
    this.mapController = mapController;
    let pointAnnotationOptions: mapCommon.PointAnnotationParams = {
    // 定义点注释图标锚点
    position: {
    latitude: 32.020750,
    longitude: 118.788765
    },
    // 定义点注释名称与地图poi名称相同时,是否支持去重
    repeatable: true,
    // 定义点注释的碰撞规则
    collisionRule: mapCommon.CollisionRule.NAME,
    // 定义点注释的标题,数组长度最小为1,最大为3
    titles: [{
    // 定义标题内容
    content: "南京夫子庙",
    // 定义标题字体颜色
    color: 0xFF000000,
    // 定义标题字体大小
    fontSize: 15,
    // 定义标题描边颜色
    strokeColor: 0xFFFFFFFF,
    // 定义标题描边宽度
    strokeWidth: 2,
    // 定义标题字体样式
    fontStyle: mapCommon.FontStyle.ITALIC
    }
    ],
    // 定义点注释的图标,图标存放在resources/rawfile
    icon: "",
    // 定义点注释是否展示图标
    showIcon: true,
    // 定义点注释的锚点在水平方向上的位置
    anchorU: 0.5,
    // 定义点注释的锚点在垂直方向上的位置
    anchorV: 1,
    // 定义点注释的显示属性,为true时,在被碰撞后仍能显示
    forceVisible: false,
    // 定义碰撞优先级,数值越大,优先级越低
    priority: 3,
    // 定义点注释展示的最小层级
    minZoom: 2,
    // 定义点注释展示的最大层级
    maxZoom: 22,
    // 定义点注释是否可见
    visible: true,
    // 定义点注释叠加层级属性
    zIndex: 10
    }
    this.pointAnnotation = await this.mapController.addPointAnnotation(pointAnnotationOptions);
    }
    };
    }
    build() {
    Stack() {
    Column() {
    MapComponent({ mapOptions: this.mapOption, mapCallback: this.callback });
    }.width('100%')
    }.height('100%')
    }
    }

    cke_10794.png

  3. 在添加点注释之后,修改已经设置的标记属性。
    // 设置点注释的显示层级为3~14级
    this.pointAnnotation.setZoom(3,14);
    // 设置点注释的碰撞优先级为10
    this.pointAnnotation.setPriority(10);

设置监听点注释点击事件

this.mapController?.on("pointAnnotationClick", (pointAnnotation) => {
console.info("pointAnnotationClick", `on-PointAnnotationClick pointAnnotation = ${pointAnnotation.getId()}`);
});

点注释动画

PointAnnotation调用setAnimation(animation: Animation)设置动画。

PointAnnotation调用startAnimation启动动画。

let animation: map.ScaleAnimation = new map.ScaleAnimation(1, 3, 1, 3);
// 设置动画单次的时长
animation.setDuration(3000);
// 设置动画的开始监听
animation.on("start", () => {
console.info('start ScaleAnimation');
});
animation.on("end", () => {
console.info('end ScaleAnimation');
});
// 设置动画执行完成的状态
animation.setFillMode(map.AnimationFillMode.BACKWARDS);
// 设置动画重复的方式
animation.setRepeatMode(map.AnimationRepeatMode.REVERSE);
// 设置动画插值器
animation.setInterpolator(Curve.Linear);
// 设置动画的重复次数
animation.setRepeatCount(100);
this.pointAnnotation.setAnimation(animation);
this.pointAnnotation.startAnimation();

cke_15461.gif

点注释标题动画

PointAnnotation调用setTitleAnimation(animation:FontSizeAnimation )设置标题动画。

PointAnnotation调用startTitleAnimation启动标题动画。

let animation: map.FontSizeAnimation = new map.FontSizeAnimation(15, 45);
// 设置动画单次的时长
animation.setDuration(3000);
// 设置动画的开始监听
animation.on("start", () => {
console.info('start FontSizeAnimation');
});
animation.on("end", () => {
console.info('end FontSizeAnimation');
});
// 设置动画执行完成的状态
animation.setFillMode(map.AnimationFillMode.FORWARDS);
// 设置动画重复的方式
animation.setRepeatMode(map.AnimationRepeatMode.REVERSE);
// 设置动画插值器
animation.setInterpolator(Curve.Linear);
// 设置动画的重复次数
animation.setRepeatCount(100);
this.pointAnnotation.setTitleAnimation(animation);
this.pointAnnotation.startTitleAnimation();

cke_20022.gif

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11.梯度下降法的思想——举足轻重的模型优化算法

引言 优化算法在机器学习和人工智能中扮演者至关重要的角色。机器学习模型的训练过程本质上是一个优化问题&#xff0c;即通过调整模型参数来最小化损失函数。梯度下降法(Gradient Descent)在优化算法中占据着重要的地位&#xff0c;因其简单、有效且易于实现。 通过阅读本篇…

jupyter使用pytorch

1、激活环境 以下所有命令都在Anaconda Prompt中操作。 conda activate 环境名称我的环境名称是myenv 如果不知道自己的pytorch配在哪个环境&#xff0c;就用下面方法挨个试。 2、安装jupyter 1、安装 pip install jupyter2、如果已经安装&#xff0c;检查jupyter是否已…

【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;感知机&#xff08;二&#xff09;多层感知机1、隐藏层2、激活函数sigma函数tanh函数ReLU函数 3、反向传播算法 三、算法优缺点&#xff08;一&#xff09;优点&#xff08;二&#xff09;缺点 四、MLP分类任务实现…

多模态大模型学习(一)

参考&#xff1a;https://www.bilibili.com/video/BV1kT411o7a6?p2&spm_id_frompageDriver&vd_source156234c72054035c149dcb072202e6be 余弦相似度&#xff0c;让正样本内积趋近于1&#xff0c;负样本趋近于-1。度量学习。N特别大时&#xff0c;负样本远大于正样本&…

喜报!厦门唐普信息技术斩获 厦门火炬高新区“火炬瞪羚企业” 殊荣

近日&#xff0c;依据《厦门火炬高新区关于支持科技企业创新提质发展的若干措施》&#xff08;厦高管规 [2024] 3 号&#xff09;&#xff0c;火炬管委会启动了 2024 年度 “火炬瞪羚企业” 认定工作。 厦门火炬高新区管委会对2024年“火炬瞪羚企业”名单进行了公示&#xff0…

机器翻译之多头注意力(MultiAttentionn)在Seq2Seq的应用

目录 1.多头注意力&#xff08;MultiAttentionn&#xff09;的理念图 2.代码实现 2.1创建多头注意力函数 2.2验证上述封装的代码 2.3 创建 添加了Bahdanau的decoder 2.4训练 2.5预测 3.知识点个人理解 1.多头注意力&#xff08;MultiAttentionn&#xff09;的理念图…

protobuf编码方式

protobuf编码方式 一个简单的例子 message Test1 {optional int32 a 1; }上述的proto文件&#xff0c;设置a 150&#xff0c;那么将其序列化后&#xff0c;得到的数据就是08 96 01&#xff0c;然后你使用protoscope工具去解析这些数据&#xff0c;就得到1 : 150&#xff0c…

基于深度学习的花卉智能分类识别系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 传统的花卉分类方法通常依赖于专家的知识和经验&#xff0c;这种方法不仅耗时耗力&#xff0c;而且容易受到主观因素的影响。本系统利用 TensorFlow、Keras 等深度学习框架构建卷积神经网络&#…

【Linux:共享内存】

共享内存的概念&#xff1a; 操作系统通过页表将共享内存的起始虚拟地址映射到当前进程的地址空间中共享内存是由需要通信的双方进程之一来创建但该资源并不属于创建它的进程&#xff0c;而属于操作系统 共享内存可以在系统中存在多份&#xff0c;供不同个数&#xff0c;不同进…

推荐5款压箱底的宝贝,某度搜索就有

​ 今天要给大家推荐5款压箱底的宝贝软件了&#xff0c;都是在某度搜索一下就能找到的好东西。 1.桌面壁纸——WinDynamicDesktop ​ WinDynamicDesktop是一款创新的桌面壁纸管理工具&#xff0c;能根据用户的地理位置和时间自动更换壁纸。软件内置多个美丽的动态壁纸主题&am…

苹果电脑系统重磅更新——macOS Sequoia 15 系统 新功能一 览

有了 macoS Sequoia&#xff0c;你的工作效率将再次提升&#xff1a;快速调整桌面布局&#xff0c;一目了然地浏览网页重点&#xff0c;还可以通过无线镜像功能操控你的iPhone。 下面就来看看几项出色新功能&#xff0c;还有能够全面发挥这些功能的 App 和游戏。 macOS Sequo…

智能新突破:AIOT 边缘计算网关让老旧水电表图像识别

数字化高速发展的时代&#xff0c;AIOT&#xff08;人工智能物联网&#xff09;技术正以惊人的速度改变着我们的生活和工作方式。而其中&#xff0c;AIOT 边缘计算网关凭借其强大的功能&#xff0c;成为了推动物联网发展的关键力量。 这款边缘计算网关拥有令人瞩目的 1T POS 算…

使用build_chain.sh离线搭建匹配的区块链,并通过命令配置各群组节点的MySQL数据库

【任务】 登陆Linux服务器&#xff0c;以MySQL分布式存储方式安装并部署如图所示的三群组、四机构、 七节点的星形组网拓扑区块链系统。其中&#xff0c;三群组名称分别为group1、group2和group3&#xff0c; 四个机构名称为agencyA、agencyB、agencyC、agencyD。p2p_port、cha…

powerbi计算销售额累计同比增长率——dax

目录 效果展示&#xff1a; 一、建立日期表 二、建立度量值 1.销售收入 2.本年累计销售额 3.去年累计销售额 4.累计同比增长率 三、矩阵表制作 效果展示&#xff1a; 数据包含2017-2019年的销售收入数据 一、建立日期表 日期表建立原因及步骤见上一篇文章https://blog…

数据处理与统计分析篇-day11-RFM模型案例

会员价值度模型介绍 会员价值度用来评估用户的价值情况&#xff0c;是区分会员价值的重要模型和参考依据&#xff0c;也是衡量不同营销效果的关键指标之一。 价值度模型一般基于交易行为产生&#xff0c;衡量的是有实体转化价值的行为。常用的价值度模型是RFM RFM模型是根据…

UNI-SOP应用场景(1)- 纯前端预开发

在平时新项目开发中&#xff0c;前端小伙伴是否有这样的经历&#xff0c;hi&#xff0c;后端小伙伴们&#xff0c;系统啥时候能登录&#xff0c;啥时候能联调了&#xff0c;这是时候往往得到的回答就是&#xff0c;再等等&#xff0c;我们正在搭建系统呢&#xff0c;似曾相识的…

20个数字经济创新发展试验区建设案例【2024年发布】

数据简介&#xff1a;国家数字经济创新发展试验区的建设是一项重要的国家战略&#xff0c;旨在推动数字经济与实体经济的深度融合&#xff0c;促进经济高质量发展。自2019年10月启动以来&#xff0c;包括河北省&#xff08;雄安新区&#xff09;、浙江省、福建省、广东省、重庆…

通过OpenScada在ARMxy边缘计算网关上实现数字化转型

随着工业4.0概念的普及&#xff0c;数字化转型已成为制造业升级的关键路径之一。在此背景下&#xff0c;边缘计算技术因其能够有效处理大量数据、减少延迟并提高系统响应速度而受到广泛关注。ARMxy边缘计算网关&#xff0c;特别是BL340系列&#xff0c;凭借其强大的性能和灵活的…

Linux网络之UDP与TCP协议详解

文章目录 UDP协议UDP协议数据报报头 TCP协议确认应答缓冲区 超时重传三次握手其他问题 四次挥手滑动窗口流量控制拥塞控制 UDP协议 前面我们只是说了UDP协议的用法,但是并没有涉及到UDP协议的原理 毕竟知道冰箱的用法和知道冰箱的原理是两个层级的事情 我们首先知道计算机网…

使用API有效率地管理Dynadot域名,设置域名服务器(NS)

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…