首页 > 其他分享 >华为地图--

华为地图--

时间:2024-09-08 13:25:50浏览次数:12  
标签:map mapOptions -- 地图 华为 mapCommon true mapController

华为地图


前言

Map Kit(地图服务)为开发者提供强大而便捷的地图能力,助力全球开发者实现个性化显示地图、位置搜索和路径规划等功能,轻松完成地图构建工作。您可以轻松地在HarmonyOS应用/元服务中集成地图相关的功能,全方位提升用户体验。


一、Map Kit(地图服务)

Map Kit 提供以下功能,满足绝大多数地图开发的需求:

创建地图:呈现内容包括建筑、道路、水系等。
地图交互:控制地图的交互手势和交互按钮。
在地图上绘制:添加位置标记、覆盖物以及各种形状等。
位置搜索:多种查询Poi信息的能力。
路径规划:提供驾车、步行、骑行路径规划能力。
静态图:获取一张地图图片。
地图Picker:提供地点详情展示控件、地点选取控件、区划选择控件。通过Petal 地图应用实现导航等能力:查看位置详情、查看路径规划、发起导航、发起内容搜索。
地图计算工具:华为地图涉及的2种坐标系及其使用区域和转换。

二、具体实现

1. 创建地图

如果需要在自己的应用中使用地图组件相关功能,需要现在 AppGallery Connect 平台【开通相关权限】
在这里插入图片描述
利用的组件:MapComponent 地图组件,用于在您的页面中放置地图。
代码如下(示例):

1.1 导入Map Kit相关模块

import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';

1.2 新建地图初始化参数 mapOptions,设置地图中心点坐标及层级

通过callback回调的方式获取MapComponentController对象,用来操作地图。

  private TAG = "HuaweiMapDemo";
  private mapOptions?: mapCommon.MapOptions;
  private callback?: AsyncCallback<map.MapComponentController>;
  private mapController?: map.MapComponentController;
  private mapEventManager?: map.MapEventManager;

  aboutToAppear(): void {
    // 地图初始化参数,设置地图中心点坐标及层级
    this.mapOptions = {
      position: {
        target: {
          latitude: 39.9,
          longitude: 116.4
        },
        zoom: 10
      },
       scrollGesturesEnabled: true,
       rotateGesturesEnabled: true,
       dayNightMode: 2  //2--打开系统深色开关,显示夜间模式,否则显示日间模式。
                       //0--日间模式 / 1--深色模式 
    };

    // 地图初始化的回调
    this.callback = async (err, mapController) => {
      if (!err) {
        // 获取地图的控制器类,用来操作地图
        this.mapController = mapController;
        this.mapEventManager = this.mapController.getEventManager();
        let callback = () => {
          console.info(this.TAG, `on-mapLoad`);
        }
        this.mapEventManager.on("mapLoad", callback);
      }
    };

1.3 调用MapComponent组件,传入mapOptions和callback参数,初始化地图

build() {
    Stack() {
      // 调用MapComponent组件初始化地图
      MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback })
      .width('100%')
      .height('100%')
    }
    .height('100%')

2.设置地图属性

MapOptions常用的属性如下,具体属性可见 链接

属性描述
mapType地图类型,默认值:MapType.STANDARD。
position地图相机位置。
bounds地图展示框。
rotateGesturesEnabled是否支持旋转手势,默认值:true。
scrollGesturesEnabled是否支持滑动手势,默认值:true。
mapType地图类型,默认值:MapType.STANDARD。
mapType地图类型,默认值:MapType.STANDARD。

3. 绘制折线 & 绘制标记点

在这里插入图片描述

代码如下(示例):



  private mapEventManager?: map.MapEventManager;
  private mapPolyline?: map.MapPolyline;


   // 绘制折线
   // polyline初始化参数
        let polylineOption: mapCommon.MapPolylineOptions = {
          points: [
            { longitude: 116.4, latitude: 39.9 },
            { longitude: 116.5, latitude: 40.1 },
            { longitude: 87.640949, latitude: 43.831917 }
          ],
          clickable: true,
          startCap: mapCommon.CapStyle.BUTT,
          endCap: mapCommon.CapStyle.BUTT,
          geodesic: false,
          jointType: mapCommon.JointType.BEVEL,
          visible: true,
          width: 10,
          zIndex: 10,
          gradient: false,
          color: 0xffff0000
        }
        // 创建polyline
        this.mapPolyline = await this.mapController.addPolyline(polylineOption);

        // 绘制标记点
        let markerOptions: mapCommon.MarkerOptions = {
          position: { longitude: 116.4, latitude: 39.9 },
          rotation: 0,
          visible: true,
          zIndex: 0,
          alpha: 1,
          anchorU: 0.5,
          anchorV: 1,
          clickable: true,
          draggable: true,
          flat: false
        };
        // 创建Marker
        await this.mapController.addMarker(markerOptions);

        let markerOptions1: mapCommon.MarkerOptions = {
          position: { longitude: 87.640949, latitude: 43.831917 },
          rotation: 0,
          visible: true,
          zIndex: 0,
          alpha: 1,
          anchorU: 0.5,
          anchorV: 1,
          clickable: true,
          draggable: true,
          flat: false
        };
        // 创建Marker
        await this.mapController.addMarker(markerOptions1);

总结

以上就是华为地图在开发中的基本使用,一些更具体的用法还是要看 API 来实现。
链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/map-kit-guide-V5

标签:map,mapOptions,--,地图,华为,mapCommon,true,mapController
From: https://blog.csdn.net/hhhhhh5666/article/details/142023193

相关文章

  • Emitter 线程通信
    文章目录前言一、线程通信二、Emitter通信1.介绍2.使用方法3.使用场景总结前言线程是一个操作系统能够运算调度的最小单位,被包含在进程之中,也是进程中的实际运作单位。而在一个应用中也许会有很多个进程,但是所有的UIAbility、ServiceExtensionAbility和Data......
  • 如何打印CSDN博文和博客园博文
    如何打印CSDN博文和博客园博文相信大家看到一些比较不错的博文,都想打印保存一下,但是浏览器自带的打印会发生覆盖的问题并且除了博文之外的文字也会被打印,很不友好;这里提供一个新的方法:1、打开想要打印的博文;2、右键鼠标,选择检查,如图所示。3、点击检查,进入如下页面,选中Consol......
  • Linux代理端口设置
    目录前言创建ssh隧道设置全局代理设置局部代理参考资料前言有时候通过局域网连接的服务器缺少一些必备的工具,但是服务器没有连接互联网,导致无法直接下载安装。为了可以让未连接互联网的服务器直接访问网络下载所需工具,便可以通过ssh隧道的方式实现。首先,通过ssh隧......
  • 第二周周日9.8学习总结
    vj2https://vjudge.net/contest/651666#overviewhttps://www.cnblogs.com/Hamine/p/16661610.htmlC-ExpressMailTaking#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;typedeflonglongll;constintmaxn=200......
  • 信息学奥赛初赛天天练-86-NOIP2014普及组-基础题5-球盒问题、枚举算法、单源最短路、D
    1NOIP2014普及组基础题521把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用K表示)()例如,M=7,N=3时,K=8;在这里认为(5,1,1)和(1,5,1)是同一种放置方法。问:M=8,N=5时,K=()22如图所示,图中每条边上的数字表示该边的长度,则从......
  • LazyForEach:数据懒加载
    文章目录前言一、LazyForEach是什么?LazyForEach懒加载的原理和渲染过程使用限制二、使用步骤1.实现提供的一个IDataSource的接口2.将数据包装到对象中,实现一系列增删改查的方法3.ForEach替换为LazyForEach即可总结前言在HarmonyOS中,我们经常会遇到长列表加载的......
  • 使用 nuxi preview 命令预览 Nuxt 应用
    title:使用nuxipreview命令预览Nuxt应用date:2024/9/8updated:2024/9/8author:cmdragonexcerpt:摘要:本文介绍了如何使用nuxipreview命令预览Nuxt.js应用,包括安装和准备环境、启动预览服务器的步骤,以及如何指定根目录和使用自定义.env文件等高级用法。通过nuxip......
  • 5个充分掌握ChatGPT的使用技巧!
    ChatGPT从2022年11月发布以来,就一直占据各大科技新闻和网路版面,并且引发好几家科技巨头更加大张旗鼓地投入AI技术(ArtificialIntelligence,人工智慧),由此应该不难了解它到底有多强大了,也绝对不只是话题炒作。ChatGPT真的满厉害的,它可以纯聊天、算数学题目、写代码、做表......
  • 逻辑表达式,最小项
    目录得到此图的逻辑电路1.画出它的真值表2.根据真值表写出逻辑式3.画逻辑图逻辑函数的表示逻辑表达式最小项定义基本性质最小项编号最小项表达式 得到此图的逻辑电路1.画出它的真值表这是同或的逻辑式。2.根据真值表写出逻辑式 3.画逻辑图 有两......
  • WGCLOUD使用指南 - 监测数据库的连通性
    数据可视化监测是WGCLOUD的一个重要模块,可以帮我们监控数据源是否在线,自定义sql查询数据进行可视化展示,比如新增订单、注册用户量、数据库运行参数等信息数据监控是由server来监测的,因此要保证server主机能够访问到数据库如果server无法访问被监控的数据源,怎么监控 1、......