1.问题描述:

提供两套标准方案,可根据体验需求选择:

1.地图Picker(地点详情)

用户体验:①展示地图 ②标记地点 ③用户选择已安装地图应用

接入文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/map-location-details-V5

2.导航意图面板

用户体验:①用户选择已安装地图应用

接入文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/start-intent-panel-V5

解决方案:

检查一下是否存在图片风控:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-image-control-V5

2.问题描述:

地图组件里marker的位置如何能固定在屏幕指定位置,比如我想让marker固定显示在 屏幕宽度/2,屏幕高度/4的位置上,该如何设置

解决方案:

这边可以尝试下使用stack布局,在地图组件上叠一个marker样式。

尝试下如下demo:


import { map, mapCommon, MapComponent } from '@kit.MapKit'; import { AsyncCallback } from '@kit.BasicServicesKit'; // 1、导入文件 import display from '@ohos.display' @Entry @Component struct Index3 { private mapOptions?: mapCommon.MapOptions; private callback?: AsyncCallback<map.mapcomponentcontroller>; private mapController?: map.MapComponentController; @State screenWidth: number = 0 @State screenHeight: number = 0 aboutToAppear(): void { // 初始化图标 // 地图初始化参数,设置地图中心点坐标及层级 let target: mapCommon.LatLng = { latitude: 39.9181, longitude: 116.3970193 }; let cameraPosition: mapCommon.CameraPosition = { target: target, zoom: 15 }; this.mapOptions = { position: cameraPosition }; // 地图初始化的回调 this.callback = async (err, mapController) =&gt; { if (!err) { this.mapController = mapController; } } display.getAllDisplays((err, data) =&gt; { let screenWidth: number = data[0].width let screenHeight: number = data[0].height console.log('width = ' + screenWidth + 'height = ' + screenHeight) console.log('width + height = ' + JSON.stringify(data)) }) } build() { Stack() { MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback }).width('100%').height('100%') marker().position({ x: "44%", y: "25%" }) } } } @Component struct marker { build() { Column({ space: 5 }) { Image($r('app.media.xxx')).width(50) Text("xxxx") } .width(50).height(50) } }

3.问题描述:

使用华为地图进行地图开发,定位图标展示不满足需求;

期望是连续定位、地图中心点不跟随定位蓝点移动、定位蓝点的方向依据设备方向旋转;

目前最合适的是用defaule模式,但是default模式定位蓝点的方向无法旋转,期望能够支持跟随设备旋转。

解决方案:

经过确认,目前的规格就是,在连续定位时,进行随设备旋转和跟随移动。

设计时分析了常见的竞品,也都没有提供目前需求的这种方式。

如果不是连续定位的话,可以不跟随移动;

后续应该不会增加类似的功能,麻烦伙伴自行选择要用哪种模式。

4.问题描述:

如何打开三方地图应用候选列表?

解决方案:

可以使用Ability Kit提供的拉起导航类应用 能力:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/start-navigation-apps-V5

5.问题描述:

使用MapComponent组件,在mapCallback回调中添加marker,大头针太大,无法设置大小。

解决方案:

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

import { AsyncCallback } from '@kit.BasicServicesKit';

import { image } from '@kit.ImageKit';

@Entry

@Component

struct AddMarker {

private mapOptions?: mapCommon.MapOptions;

private mapController?: map.MapComponentController;

private callback?: AsyncCallback<map.mapcomponentcontroller>;

@State imagePixelMap: PixelMap | undefined = undefined;

getMarkerPixelMap() {

getContext(this).resourceManager.getMediaContent($r("app.media.startIcon")).then((data) =&gt; {

let arrayBuffer = data.buffer.slice(data.byteOffset, data.byteLength + data.byteOffset)

let imageSource: image.ImageSource = image.createImageSource(arrayBuffer);

imageSource.getImageInfo((err, value) =&gt; {

//获取图片资源的尺寸

console.log('testTag',`图片的尺寸为:width:${value.size.width}height:${value.size.height}`)

if (err) {return;}

//转PixelMap,也可以在这个里面设置宽和高,比如下面是在原有的宽高基础上放大5倍

let opts: image.DecodingOptions =

{ editable: true, desiredSize: { height: value.size.height*5, width: value.size.width*5 } };

imageSource.createPixelMap(opts, (err,

pixelMap) =&gt; {

console.log('testTag', `createPixelMap`)

this.imagePixelMap = pixelMap

this.addMarker()

})

})

})

}

addMarker() {

// Marker初始化参数

let markerOptions: mapCommon.MarkerOptions = {

position: {

latitude: 31.984410259206815,

longitude: 118.76625379397866

},

rotation: 0,

visible: true,

zIndex: 0,

alpha: 1,

anchorU: 0.5,

anchorV: 1,

clickable: true,

draggable: true,

flat: false,

icon:this.imagePixelMap

};

console.log('testTag', `addMarker`)

this.mapController?.addMarker(markerOptions);

}

aboutToAppear(): void {

// 地图初始化参数

this.mapOptions = {

position: {

target: {

latitude: 31.984410259206815,

longitude: 118.76625379397866

},

zoom: 15

}

};

this.callback = async (err, mapController) =&gt; {

if (!err) {

console.log('testTag', `callback`)

this.mapController = mapController;

this.getMarkerPixelMap()

}

};

}

build() {

Stack() {

Column() {

MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback });

}.width('100%')

}.height('100%')

}

}

6.问题描述:

javaScript引入华为地图API文件,其中key要经过URL转码。是如何转码的?

解决方案:

文档上说明使用API密钥时需要调用URLEncoder.encode("Your apiKey", "UTF-8")方法对API密钥进行encodeURI编码。请参考文档:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/javascript-api-preparations-0000001078448006#section175508543353

如何保护API密钥?:https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/faq-0000001050166999#section78166185011</map.mapcomponentcontroller></map.mapcomponentcontroller>

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(5)的更多相关文章

  1. Linux开源系统对比Windows闭源系统的优势解析

    当我们听到linux的时候是不是觉得高大上的感觉呢?在我刚上大学的时候,听着学长们给我讲他们的大学的学习经历,先学习C语言.单片机.然后做一些项目,现在正学习linux操作系统,当我听到linux操作 ...

  2. 第一部分:开发前的准备-第八章 Android SDK与源码下载

    第8章 Android SDK与源码下载 如果你是新下载的SDK,请阅读一下步骤了解如何设置SDK.如果你已经下载使用过SDK,那么你应该使用AVD Manager,来更新即可. 下面是构建Andro ...

  3. Eureka 2.0 闭源--选择Consul???

    在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件,Eureka ...

  4. Eureka 2.0 闭源--选择Consul???[转]

    原文链接: https://www.cnblogs.com/williamjie/p/9369800.html 在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大 ...

  5. Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程.今天 ...

  6. 源映射(Source Map)详解

    一.什么是源映射 为了提高性能,很多站点都会先压缩 JavaScript 代码然后上线, 但如果代码运行时出现错误,浏览器只会显示在已压缩的代码中的位置,很难确定真正的源码错误位置. 这时源映射就登场 ...

  7. 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?

    今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了.. 已经从 Dubbo 迁移至 Spring Cl ...

  8. jdk1.8.0_45源码解读——Map接口和AbstractMap抽象类的实现

    jdk1.8.0_45源码解读——Map接口和AbstractMap抽象类的实现 一. Map架构 如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value).(02) A ...

  9. Ubuntu 16.04安装GTX960闭源驱动

    GTX960的闭源要Nvidia 346版才行,闭源驱动能很大提升显卡的性能,例如双显示输出等,缺点是不开源. 有以下方式来安装: 1.命令行: sudo add-apt-repository -y ...

  10. 小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响

    笔记 4.SpringCloud微服务核心组件Eureka介绍和闭源后影响     简介:         SpringCloud体系介绍             官方地址:http://projec ...

随机推荐

  1. Flutter 滑动组件互相嵌套问题

    滑动组件互相嵌套问题 如果listview/singlechildscrollview 嵌套gridview,将两个组件的shrinkwrap设置为true,并且gridview无法滚动 physic ...

  2. manim边学边做--旋转

    本篇介绍Manim中的两个旋转类的动画,名称差不多,分别是Rotate和Rotating. Rotate类主要用于对图形对象进行指定角度.围绕特定点的精确旋转,适用于几何图形演示.物理模拟和机械运动展 ...

  3. 【Java高级编程】Java多线程学习笔记

    Java 多线程 目录 Java 多线程 1.多线程创建 方法1:通过 继承 thread 类 方法2:通过 实现 Runnable 接口 2.线程中的相关方法 (1)设置优先级 setPrlorty ...

  4. shell之变量默认值

    {var:-default_value}当var 不存在,或者值为空时,返回default_value name不存在,返回了一个默认值,但是name并没有改变, 后续不可访问 $ set -u # ...

  5. 龙哥量化:AI时代到来,百度的文心一言能AI选股吗,让AI写一个选股公式20日涨幅>=30%,AI弱智,垃圾。在通达信测试对比一下

    如果您需要代写技术指标公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 选股要求:20日涨幅>=30% 首先看我写的 HH:=HHV(H,20); LL:=LLV ...

  6. Many-shot Jailbreaking💘足够长的上下文长度有利于各种越狱?

    这篇文章虽然相较于上一篇图的对应有点迷,但是我感到了作者在强化学习与微调还有数学方面的深厚功底,我甚至感觉他的附录可以再发一篇文章了 这阶段的学习打开了我对越狱的思路~ 禁止盗用,侵权必究!!!欢迎大 ...

  7. [转]vue-router动态添加路由的方法,addRouter添加路由,提示:Duplicate named routes definition

    问题描述:在做使用vue-router动态添加路由的方法,addRouter添加,使用 console.log(this.$router.options.routes) 打印对象,发现添加成功,但是一 ...

  8. react之Lazy和Suspense(懒加载)

    React.lazy React.lazy 函数能让你像渲染常规组件一样处理动态引入(的组件). 什么意思呢? 其实就是懒加载. 其原理就是利用es6 import()函数.这个import不是imp ...

  9. Java Spring Cloud Nacos 配置修改不生效的解决方法

    一.引言 在微服务架构中,配置管理是一个关键部分.Nacos作为一个动态服务发现.配置管理和服务管理平台,广泛应用于Java Spring Cloud项目中.然而,有时在修改Nacos配置后,这些更改 ...

  10. OS:RAID

    什么是RAID? 独立磁盘冗余阵列[磁盘阵列](Redundant Arrays of Independent Disks,RAID) 磁盘阵列: 由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用 ...