【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(5)
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) => {
if (!err) {
this.mapController = mapController;
}
}
display.getAllDisplays((err, data) => {
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) => {
let arrayBuffer = data.buffer.slice(data.byteOffset, data.byteLength + data.byteOffset)
let imageSource: image.ImageSource = image.createImageSource(arrayBuffer);
imageSource.getImageInfo((err, value) => {
//获取图片资源的尺寸
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) => {
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) => {
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)的更多相关文章
- Linux开源系统对比Windows闭源系统的优势解析
当我们听到linux的时候是不是觉得高大上的感觉呢?在我刚上大学的时候,听着学长们给我讲他们的大学的学习经历,先学习C语言.单片机.然后做一些项目,现在正学习linux操作系统,当我听到linux操作 ...
- 第一部分:开发前的准备-第八章 Android SDK与源码下载
第8章 Android SDK与源码下载 如果你是新下载的SDK,请阅读一下步骤了解如何设置SDK.如果你已经下载使用过SDK,那么你应该使用AVD Manager,来更新即可. 下面是构建Andro ...
- Eureka 2.0 闭源--选择Consul???
在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面 Spring Cloud 支持很多服务发现的软件,Eureka ...
- Eureka 2.0 闭源--选择Consul???[转]
原文链接: https://www.cnblogs.com/williamjie/p/9369800.html 在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大 ...
- Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程.今天 ...
- 源映射(Source Map)详解
一.什么是源映射 为了提高性能,很多站点都会先压缩 JavaScript 代码然后上线, 但如果代码运行时出现错误,浏览器只会显示在已压缩的代码中的位置,很难确定真正的源码错误位置. 这时源映射就登场 ...
- 凉凉了,Eureka 宣布闭源,Spring Cloud 何去何从?
今年 Dubbo 活了,并且被 Apache 收了.同时很不幸,Spring Cloud 下的 Netflix Eureka 组件项目居然宣布闭源了.. 已经从 Dubbo 迁移至 Spring Cl ...
- jdk1.8.0_45源码解读——Map接口和AbstractMap抽象类的实现
jdk1.8.0_45源码解读——Map接口和AbstractMap抽象类的实现 一. Map架构 如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value).(02) A ...
- Ubuntu 16.04安装GTX960闭源驱动
GTX960的闭源要Nvidia 346版才行,闭源驱动能很大提升显卡的性能,例如双显示输出等,缺点是不开源. 有以下方式来安装: 1.命令行: sudo add-apt-repository -y ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响
笔记 4.SpringCloud微服务核心组件Eureka介绍和闭源后影响 简介: SpringCloud体系介绍 官方地址:http://projec ...
随机推荐
- Flutter 滑动组件互相嵌套问题
滑动组件互相嵌套问题 如果listview/singlechildscrollview 嵌套gridview,将两个组件的shrinkwrap设置为true,并且gridview无法滚动 physic ...
- manim边学边做--旋转
本篇介绍Manim中的两个旋转类的动画,名称差不多,分别是Rotate和Rotating. Rotate类主要用于对图形对象进行指定角度.围绕特定点的精确旋转,适用于几何图形演示.物理模拟和机械运动展 ...
- 【Java高级编程】Java多线程学习笔记
Java 多线程 目录 Java 多线程 1.多线程创建 方法1:通过 继承 thread 类 方法2:通过 实现 Runnable 接口 2.线程中的相关方法 (1)设置优先级 setPrlorty ...
- shell之变量默认值
{var:-default_value}当var 不存在,或者值为空时,返回default_value name不存在,返回了一个默认值,但是name并没有改变, 后续不可访问 $ set -u # ...
- 龙哥量化:AI时代到来,百度的文心一言能AI选股吗,让AI写一个选股公式20日涨幅>=30%,AI弱智,垃圾。在通达信测试对比一下
如果您需要代写技术指标公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 选股要求:20日涨幅>=30% 首先看我写的 HH:=HHV(H,20); LL:=LLV ...
- Many-shot Jailbreaking💘足够长的上下文长度有利于各种越狱?
这篇文章虽然相较于上一篇图的对应有点迷,但是我感到了作者在强化学习与微调还有数学方面的深厚功底,我甚至感觉他的附录可以再发一篇文章了 这阶段的学习打开了我对越狱的思路~ 禁止盗用,侵权必究!!!欢迎大 ...
- [转]vue-router动态添加路由的方法,addRouter添加路由,提示:Duplicate named routes definition
问题描述:在做使用vue-router动态添加路由的方法,addRouter添加,使用 console.log(this.$router.options.routes) 打印对象,发现添加成功,但是一 ...
- react之Lazy和Suspense(懒加载)
React.lazy React.lazy 函数能让你像渲染常规组件一样处理动态引入(的组件). 什么意思呢? 其实就是懒加载. 其原理就是利用es6 import()函数.这个import不是imp ...
- Java Spring Cloud Nacos 配置修改不生效的解决方法
一.引言 在微服务架构中,配置管理是一个关键部分.Nacos作为一个动态服务发现.配置管理和服务管理平台,广泛应用于Java Spring Cloud项目中.然而,有时在修改Nacos配置后,这些更改 ...
- OS:RAID
什么是RAID? 独立磁盘冗余阵列[磁盘阵列](Redundant Arrays of Independent Disks,RAID) 磁盘阵列: 由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用 ...