网站建设的英文/网站关键词优化外包

网站建设的英文,网站关键词优化外包,网页qq登录首页,免费做明信片的网站【高心星出品】 文章目录 鸿蒙接入高德地图实现POI搜索运行结果:准备地图编写ArkUI布局来加载HTML地图 鸿蒙接入高德地图实现POI搜索 在当今数字化时代,地图应用已成为移动设备中不可或缺的一部分。随着鸿蒙系统的日益普及,如何在鸿蒙应用中…

【高心星出品】

文章目录

      • 鸿蒙接入高德地图实现POI搜索
        • 运行结果:
        • 准备地图
        • 编写ArkUI布局来加载HTML地图

鸿蒙接入高德地图实现POI搜索

在当今数字化时代,地图应用已成为移动设备中不可或缺的一部分。随着鸿蒙系统的日益普及,如何在鸿蒙应用中接入高德地图并实现POI(兴趣点)检索功能,成为了众多开发者关注的焦点。本文将详细介绍这一过程,帮助开发者快速上手,为用户打造更优质的地图体验。

鸿蒙系统作为华为自主研发的分布式操作系统,具有高性能、低功耗等诸多优势,为智能设备提供了强大的支持。而高德地图凭借其丰富的数据资源、精准的定位功能以及多样化的地图服务,在国内地图应用领域占据重要地位。将鸿蒙与高德地图相结合,能够充分发挥双方的优势,为用户提供更加便捷、高效的地图导航和POI检索服务。

但是目前高德地图API暂不支持HarmonyOS5.0版本,需要使用鸿蒙的Web组件加载JS版高德地图。

运行结果:

在这里插入图片描述

准备地图

首先需要注册高德地图开发者,创建应用:https://lbs.amap.com/api/javascript-api-v2/prerequisites

准备一个基础地图。

HTML代码如下:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><metaname="viewport"content="initial-scale=1.0, user-scalable=no, width=device-width"/><title>HELLO,AMAP!</title><style>html,body,#container {width: 100%;height: 100%;}</style><style type="text/css">#panel {position: absolute;max-height: 90%;height:300px;overflow-y: auto;top: 50px;right: 10px;width: 180px;}.amap_lib_placeSearch .poibox .poi-title{font-size:12px;}.amap_lib_placeSearch .poibox .poi-info p{font-size:10px;}#search {position: absolute;background-color: transparent;max-height: 90%;overflow-y: auto;top: 20px;right: 10px;width: 180px;}#search_input{width:120px;}</style>
</head>
<body>
<div id="container"></div>
<div id="panel"></div>
<div id="search"><input id="search_input" type="text" placeholder="搜索地址"><input id="search_sub" type="submit" value="搜索" onclick="search()">
</div>
<script type="text/javascript">window._AMapSecurityConfig = {securityJsCode: "210560c7b915b95686d9baa8b12d5a83",};
</script>
<script src="https://webapi.amap.com/loader.js"></script>
<script type="text/javascript">var mapAMapLoader.load({key: "d7b81d72864f222e583d2283493cdd58", //申请好的Web端开发者 Key,调用 load 时必填version: "2.0", //指定要加载的 JS API 的版本,缺省时默认为 1.4.15}).then((AMap) => {map = new AMap.Map("container",{zoom:10,center: [118.832028,31.875796], //地图中心点});//异步加载控件AMap.plugin('AMap.ToolBar',function(){var toolbar = new AMap.ToolBar(); //缩放工具条实例化map.addControl(toolbar); //添加控件});//异步加载控件AMap.plugin('AMap.Scale',function(){var scale = new AMap.Scale()map.addControl(scale); //添加控件});}).catch((e) => {console.error(e); //加载错误提示});function search(){// 获取输入框元素var inputElement = document.getElementById('search_input');// 获取输入框中的文本内容var searchText = inputElement.value;console.log(searchText);  // 在控制台输出文本内容searchplace(searchText)}function searchplace(addr){AMap.plugin(["AMap.PlaceSearch"], function () {const placeSearch = new AMap.PlaceSearch({pageSize: 5, //单页显示结果条数pageIndex: 1, //页码
<!--            city: "江苏", //兴趣点城市-->
<!--            citylimit: true, //是否强制限制在设置的城市内搜索-->selectFirst:true,map: map, //展现结果的地图实例panel: "panel", //参数值为你页面定义容器的 id 值<div id="my-panel"></div>,结果列表将在此容器中进行展示。autoFitView: true, //是否自动调整地图视野使绘制的 Marker 点都处于视口的可见范围});placeSearch.on('selectChanged', function(e) {console.log(JSON.stringify(e.selected.data))postStringToApp(JSON.stringify(e.selected.data))});placeSearch.search(addr);});}//-------------------地图展示很poi检索js代码----------------------------------//--------------------------------与arkts通信代码--------------------------
var h5Port;
window.addEventListener('message', function(event) {if (event.data == 'initport') {if(event.ports[0] != null) {h5Port = event.ports[0]; // 1. 保存从ets侧发送过来的端口h5Port.onmessage = function(event) {// 2. 接收ets侧发送过来的消息.var result = event.data;console.log('arkts发来的消息: '+result)}h5Port.onmessageerror = (event) => {console.error(`发送了错误信息: ${event}`);};}}
})// 使用h5Port往ets侧发送String类型的消息.
function postStringToApp(str) {if (h5Port) {h5Port.postMessage(str);} else {console.error("In html h5port is null, please init first");}
}</script>
</body>
</html>

除了展示地图,还有与ArkTS通信的过程:

HTML网页会接收到ArkTS第一次发送的端口号,通过该端口号建立通道,后面就可以通过该端口号收发消息。

var h5Port;
window.addEventListener('message', function(event) {if (event.data == 'initport') {if(event.ports[0] != null) {h5Port = event.ports[0]; // 1. 保存从ets侧发送过来的端口h5Port.onmessage = function(event) {// 2. 接收ets侧发送过来的消息.var result = event.data;console.log('arkts发来的消息: '+result)}h5Port.onmessageerror = (event) => {console.error(`发送了错误信息: ${event}`);};}}
})// 使用h5Port往ets侧发送String类型的消息.
function postStringToApp(str) {if (h5Port) {h5Port.postMessage(str);} else {console.error("In html h5port is null, please init first");}
}
编写ArkUI布局来加载HTML地图

加入权限

由于加载的地图需要使用网络权限,需要早module.json5中加入INTENET权限。

"module": {'requestPermissions': [{"name": "ohos.permission.INTERNET"}],....

加载地图

需要将离线的html地图放入项目的rawfile资源中。

编写ArkTS代码

这里需要在web组件加载结束后,与离线html建立通道收发消息。

import { webview } from '@kit.ArkWeb';
import { Addr } from '../../model/Addr';@Entry
@Component
struct Index {@State message: string = 'Hello World';@State addrname:string=''@State addr:string=''private ports:webview.WebMessagePort[]=[]private port:webview.WebMessagePort|null=nullprivate controller:WebviewController=new webview.WebviewController()build() {Column(){Row({space:10}){Text('地点名称:')TextInput({text:this.addrname}).enabled(false).layoutWeight(1)}.width('100%').padding(10)Row({space:10}){Text('详细地址:')TextInput({text:this.addr}).enabled(false).layoutWeight(1)}.width('100%').padding(10)Web({src:$rawfile('poijiansuo.html'),controller:this.controller}).javaScriptAccess(true).imageAccess(true).zoomAccess(true).margin({top:10}).onPageEnd(()=>{// 创建web的通道端口号this.ports= this.controller.createWebMessagePorts()console.log('gxxt ',JSON.stringify(this.ports))// 将第二个端口号发送给html,做为html发送和接受arkts信息的端口号this.controller.postMessage('initport',[this.ports[1]],'*')//第一个端口号留给自己,作为发送和接受html信息的端口号this.port=this.ports[0]this.port.onMessageEventExt((result)=>{// 接受html的结果console.log('gxxt',JSON.stringify(result))let data= result.getString()let jsondata=JSON.parse(data) as Addrthis.addrname=jsondata.namethis.addr=jsondata.pname+jsondata.cityname+jsondata.adname+jsondata.address})})}.height('100%').width('100%')}
}

当从地图搜索某个POI地点后,点击列表中的搜索结果,就会将具体地址信息发送给ArkTS端,然后在鸿蒙端进行解析。

Addr接口

/***作者:gxx*时间:2025/2/21 16:43*功能:**/
export interface Addr {"id": string"name":string"type":string"location": number[],"address":string"tel":string"distance":string|null"shopinfo":string"website":string"pcode":string"citycode":string"adcode":string"postcode":string"pname":string"cityname":string"adname":string"email":string"photos": photos[]"entr_location": number[]"exit_location":string|null"groupbuy":boolean"discount":boolean"indoor_map":boolean"_idx":number"index":number
}
interface photos
{"title":string"url":string
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea + Docker + 阿里镜像服务打包部署

一、下载docker desktop软件 官网下载docker desktop&#xff0c;需要结合wsl使用 启动成功的画面(如果不是这个画面例如一直处理start或者是stop需要重新启动&#xff0c;不行就重启电脑) 打包成功的镜像在这里&#xff0c;如果频繁打包会导致磁盘空间被占满&#xff0c;需…

【监督学习】ARIMA预测模型步骤及matlab实现

ARIMA预测模型 ARIMA预测模型1.算法步骤2.参数选择(1)拖尾截尾判断法(2) AIC 准则(3) BIC 准则 3.MATLAB 实现参考资料 ARIMA预测模型 #mermaid-svg-mDhjwpnuA0YcEGnE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…

使用git管理uniapp项目

1.本地管理 1. 在项目根目录中新建 .gitignore 忽略文件&#xff0c;并配置如下&#xff1a; # 忽略 node_modules 目录 /node_modules /unpackage/dist 2. 打开终端&#xff0c;切换到项目根目录中&#xff0c;运行如下的命令&#xff0c;初始化本地 Git 仓库&#xff1…

Unity中动态切换光照贴图的方法

关键代码&#xff1a;LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图&#xff1a;lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张&#xff1a; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…

1.2 Kaggle大白话:Eedi竞赛Transformer框架解决方案02-GPT_4o生成训练集缺失数据

目录 0. 本栏目竞赛汇总表1. 本文主旨2. AI工程架构3. 数据预处理模块3.1 配置数据路径和处理参数3.2 配置API参数3.3 配置输出路径 4. AI并行处理模块4.1 定义LLM客户端类4.2 定义数据处理函数4.3 定义JSON保存函数4.4 定义数据分片函数4.5 定义分片处理函数4.5 定义文件名排序…

pycharm远程连接服务器运行pytorch

Linux部署pytorch 背景介绍 不同的开源代码可能需要不同的实验环境和版本&#xff0c;这时候的确体现出Anaconda管理环境的好处了&#xff0c;分别搞一个独立环境方便管理。 有的教程建议选择较旧的版本&#xff0c;但笔者建议在条件允许的情况下安装最新版&#xff0c;本次…

组件注册方式、传递数据

组件注册 一个vue组件要先被注册&#xff0c;这样vue才能在渲染模版时找到其对应的实现。有两种注册方式&#xff1a;全局注册和局部注册。&#xff08;组件的引入方式&#xff09; 以下这种属于局部引用。 组件传递数据 注意&#xff1a;props传递数据&#xff0c;只能从父…

ROS的action通信——实现阶乘运算(三)

在ROS中除了常见的话题(topic&#xff09;通信、服务(server)通信等方式&#xff0c;还有action通信这一方式&#xff0c;由于可以实时反馈任务完成情况&#xff0c;该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享&#xff0c;实现基于action通信的阶乘运…

四款 AI 协作办公工具,AI工具库革新办公效率

在数字化办公时代&#xff0c;AI 技术正深刻改变着我们的工作方式。AIDH.NETAI工具库汇聚了众多先进的工具&#xff0c;今天我们来了解 AI协作办公工具&#xff0c;探索它们如何助力企业和团队在办公场景中脱颖而出。 Taskade&#xff1a;智能工作流的领航者 Taskade 是一款将…

vue2 h5 画高德地图电子围栏

使用前请先申请高德地图key JavaScript API | 腾讯位置服务 npm install lodash-es效果图 子组件代码 <template><div class"fence-container"><div v-if"loading" class"map-loading"><div class"loader">…

unity学习54:图片+精灵+遮罩mask,旧版文本 text 和新的TMP文本

目录 1 图片 image 1.1 如果直接导入image 1.2 图片 image 和精灵 sprite 1.2.1 继续修改上面的格式 texture type 是default 1.2.2 再次关联到UI的 image 物体上就可以了 1.3 图片和遮罩 mask 1.3.1 创建1个父物体和1个子物体&#xff0c;分别都是image 1.3.2 如果父…

在线骑行|基于SpringBoot的在线骑行网站设计与实现(源码+数据库+文档)

在线骑行网站系统 目录 基于SpringBoot的在线骑行设计与实现 一、前言 二、系统设计 三、系统功能设计 5.1用户信息管理 5.2 路线攻略管理 5.3路线类型管理 5.4新闻赛事管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

(python)Arrow库使时间处理变得更简单

前言 Arrow库并不是简单的二次开发,而是在datetime的基础上进行了扩展和增强。它通过提供更简洁的API、强大的时区支持、丰富的格式化和解析功能以及人性化的显示,填补了datetime在某些功能上的空白。如果你需要更高效、更人性化的日期时间处理方式,Arrow库是一个不错的选择…

pandas中的数据结构+数据查询

pandas 数据结构 Series Series是一种类似于一维数组的对象&#xff0c;它由一组数据&#xff08;不同数据类型&#xff09;以及一组与之相关的数据标签&#xff08;即索引&#xff09;组成。 列表创建 仅有数据列表即可产生最简单的Series s1 pd.Series([1,a,5.2,7]) 左侧…

使用前端 html css 和js 开发一个AI智能平台官网模板-前端静态页面项目

最近 AI 人工智能这么火&#xff0c;那必须针对AI 做一个 AI方面的 官方静态网站练手。让自己的前端技术更上一层楼&#xff0c;哈哈。 随着人工智能技术的不断发展&#xff0c;越来越多的AI应用开始渗透到各行各业&#xff0c;为不同领域的用户提供智能化解决方案。本网站致力…

Redis集群机制及一个Redis架构演进实例

Replication&#xff08;主从复制&#xff09; Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份&#xff0c;从而达到主从机制。为了实现主从复制&#xff0c;我们准备三个redis服务&#xff0c;依次命名为master&#xff0c;slave1&#xff0c;…

Windows系统编程项目(一)进程管理器

本项目将通过MFC实现一个进程管理器&#xff0c;如下图详细信息页所示&#xff1a; 一.首先创建一个基于对话框的MFC项目&#xff0c;在静态库中使用MFC 二.在项目默认的对话框中添加一个列表 三.列表添加变量 四.初始化列表 1.设置列表风格和表头 2.填充列表内容 我们需要在…

RAG-202502

目录 RAG场景的坑知识等级金字塔 初级RAG存在的问题高级RAG索前优化检索优化检索后优化 优化经验总结参考 RAG场景的坑 晦涩的专业术语 误区&#xff1a;在专业领域中。许多文献和资料中充满了专业术语&#xff0c;这些术语对于非专业人士&#xff08;甚至是大模型&#xff0…

STM32-智能小车项目

项目框图 ST-link接线 实物图&#xff1a; 正面&#xff1a; 反面&#xff1a; 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 测速模块 语音模块SU-03T 网站&#xff1a;智能公元/AI产品零代码平台 一、让小车动起来 新建文件夹智能小车项目 在里面…

【Linux】vim 设置

【Linux】vim 设置 零、起因 刚学Linux&#xff0c;有时候会重装Linux系统&#xff0c;然后默认的vi不太好用&#xff0c;需要进行一些设置&#xff0c;本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效&#xff1a; …