华为HarmonyOS地图服务 8 - 在地图上绘制折线

场景介绍

本章节将向您介绍如何在地图上绘制折线。

 

8ad5c3e9a608629e92d2e89a92f2a9b2.png

接口说明

添加折线功能主要由MapPolylineOptionsaddPolylineMapPolyline提供,更多接口及使用方法请参见接口文档

接口名

描述

MapPolylineOptions

用于描述MapPolyline属性。

addPolyline(options: mapCommon.MapPolylineOptions): Promise<MapPolyline>

在地图上添加一条折线。

MapPolyline

更新和查询折线的接口。

开发步骤

添加折线

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

     

  2. 添加折线,在Callback方法中创建初始化参数并新建MapPolyline
    @Entry
    @Component
    struct MapPolylineDemo {
    private mapOptions?: mapCommon.MapOptions;
    private mapController?: map.MapComponentController;
    private callback?: AsyncCallback<map.MapComponentController>;
    private mapPolyline?: map.MapPolyline;
    aboutToAppear(): void {
    // 地图初始化参数
    this.mapOptions = {
    position: {
    target: {
    latitude: 31.98,
    longitude: 118.78
    },
    zoom: 14
    }
    };
    this.callback = async (err, mapController) => {
    if (!err) {
    this.mapController = mapController;
    // polyline初始化参数
    let polylineOption: mapCommon.MapPolylineOptions = {
    points: [{longitude:118.78,latitude:31.975}, {longitude:118.78,latitude:31.982}, {longitude:118.79,latitude:31.985}],
    clickable: true,
    startCap: mapCommon.CapStyle.BUTT,
    endCap: mapCommon.CapStyle.BUTT,
    geodesic: false,
    jointType: mapCommon.JointType.BEVEL,
    visible: true,
    width: 10,
    zIndex: 10,
    gradient: false
    }
    // 创建polyline
    this.mapPolyline = await this.mapController.addPolyline(polylineOption);
    }
    };
    }
    build() {
    Stack() {
    Column() {
    MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback });
    }.width('100%')
    }.height('100%')
    }
    }

     

    104f321fe36917fa35b7b4bee3bd617f.png

设置折线分段颜色

方法一:新建折线时在MapPolylineOptions的colors属性中设置折线分段颜色值。

let polylineOption: mapCommon.MapPolylineOptions = {
...
colors: [0xffffff00, 0xff000000]
};

方法二:调用MapPolylinesetColors()方法。

let colors = [0xffffff00, 0xff000000];
this.mapPolyline.setColors(colors);

 

aa34c34d6eacf871d58c96017635086b.png

设置折线可渐变

方法一:MapPolylineOptions的gradient属性设置为true。

let polylineOption: mapCommon.MapPolylineOptions = {
...
gradient: true
};

方法二:调用MapPolylinesetGradient()方法。

this.mapPolyline.setGradient(true);

5008272aaab3c01be651df5fc350b968.png

绘制纹理

方法一:新建折线时在MapPolylineOptions的customTexture属性设置折线纹理。

let polylineOption: mapCommon.MapPolylineOptions = {
points: [
{ latitude: 32.220750, longitude: 118.788765 },
{ latitude: 32.120750, longitude: 118.788765 },
{ latitude: 32.020750, longitude: 118.788765 },
{ latitude: 31.920750, longitude: 118.788765 },
{ latitude: 31.820750, longitude: 118.788765 },
],
clickable: true,
jointType: mapCommon.JointType.DEFAULT,
width: 20,
customTexture: "icon/naviline_arrow.png"
}

方法二:调用MapPolylinesetCustomTexture方法。

await this.mapPolyline.setCustomTexture("icon/naviline_arrow.png");

 

81a8dc3b6bca0c68daee17085929bf42.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青瓷看世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值