首页 > 其他分享 >[MAUI]集成高德地图组件至.NET MAUI Blazor项目

[MAUI]集成高德地图组件至.NET MAUI Blazor项目

时间:2024-03-23 22:12:59浏览次数:17  
标签:map viewService CurrentLocation var window MAUI new Blazor NET

@

目录
地图组件在手机App中常用地理相关业务,如查看线下门店,设置导航,或选取地址等。是一个较为常见的组件。

在.NET MAUI 中,有两种方案可以集成高德地图,一种是使用原生库绑定。网上也有人实现过:https://blog.csdn.net/sD7O95O/article/details/125827031

但这种方案需要大量平台原生开发的知识,而且需要对每一个平台进行适配。

在这里我介绍第二种方案:.NET MAUI Blazor + 高德地图JS API 2.0 库的实现。

JS API 2.0 是高德开放平台基于WebGL的地图组件,可以将高德地图模块集成到.NET MAUI Blazor中的BlazorWebView控件,由于BlazorWebView的跨平台特性,可以达到一次开发全平台通用,无需为每个平台做适配。

今天用此方法实现一个地图选择器,使用手机的GPS定位初始化当前位置,使用高德地图JS API库实现地点选择功能。混合开发方案涉及本机代码与JS runtime的交互,如果你对这一部分还不太了解,可以先阅读这篇文章:[MAUI]深入了解.NET MAUI Blazor与Vue的混合开发

.NET MAUI Blazor

使用.NET MAU实现跨平台支持,本项目可运行于Android、iOS平台。

前期准备:注册高德开发者并创建 key

登录控制台

登录 高德开放平台控制台,如果没有开发者账号,请 注册开发者

在这里插入图片描述

创建 key

进入应用管理,创建新应用,新应用中添加 key,服务平台选择 Web端(JS API)。再创建一个Web服务类型的Key,用于解析初始位置地址。

在这里插入图片描述

获取 key 和密钥

创建成功后,可获取 key 和安全密钥。

在这里插入图片描述

创建项目

新建.NET MAUI Blazor项目,命名AMap

创建JS API Loader

前往https://webapi.amap.com/loader.js另存js文件至项目wwwroot文件夹

在这里插入图片描述

在wwwroot创建amap_index.html文件,将loader.js引用到页面中。创建_AMapSecurityConfig对象并设置安全密钥。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
    <title>AmapApp</title>
    <base href="/" />
    <link href="css/app2.css" rel="stylesheet" />
</head>

<body>

    <div class="status-bar-safe-area"></div>

    <div id="app">Loading...</div>

    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="" class="reload">Reload</a>
        <a class="dismiss">

标签:map,viewService,CurrentLocation,var,window,MAUI,new,Blazor,NET
From: https://www.cnblogs.com/jevonsflash/p/18091763

相关文章

  • 东北大学软件学院计算机网络专业课-第一章(1.3 Network edge)
    一、网络边缘    1)定义:网络边缘(Networkedge)是计算机网络中与终端用户直接接触的部分,它是用户设备接入网络的接口。连接在互联网上的所有主机hosts(端系统endsystem)组成了网络边缘。    2)如何理解:网络边缘和网络核心是计算机网络中两个不同的层面,它们分......
  • 华为交换机 配置telnet
    5700telnetserverenableuser-interfacemaximum-vty15user-interfacevty014authentication-modeaaaprotocolinboundtelnetquitaaalocal-useradminpassworirreversible-cipherwx-ga-telprivilegelevel15local-useradminservice-typeterminalhttp......
  • Netty入门程序
    本章使用Netty开发一个入门程序,使用ServerBootstrap开发时间服务TimeServer,使用Bootstrap开发客户端TimeClient请求TimeServer获取时间。 开发TimeServer之前,先回顾一下使用NIO进行服务端开发的步骤。(1)创建ServerSocketChannel,配置它为非阻塞模式;(2)绑定监听,配置TCP参数,例......
  • MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
    打开mongoDB的mongoshell,出现以下提示,此时输入任意键都会退出界面,无法进行命令输入。这时,我们首先在网址栏中输入http://localhost:27017/是否连接到27017端口,如果返回结果如下:接着在cmd命令提示符中输入mongod,确认MongoDB服务器是否启动,返回结果如下:从红色框标记的部分......
  • JAVA非阻塞IO、异步IO(NIO、AIO)-摘自《netty权威指南》
    一、JAVANIO在介绍NIO编程之前,我们首先需要澄清一个概念:NIO到底是什么的简称?有人称之为NewI/O,因为它相对于之前的I/O类库是新增的,所以被称为NewI/O,这是它的官方叫法。但是,由于之前老的I/O类库是阻塞I/O,NewI/O类库的目标就是要让Java支持非阻塞I/O,所以,更多的人喜欢称之为非阻......
  • LLM finetune
    微调微调的目的有几个:1. 和人类对齐,减少一些hullucination和toxiccontent;2.引入domainknowledge;3.做一些promptengineering低效的事情,比如不用提供大量的样本。但是也有可能因此而产生灾难性遗忘。同时需要对样本量和质量进行把控。 SFT(supervisedfine-tuning)实......
  • Kubernetes之Pod工作负载
    Pod工作负载,亦称Pod控制器。在Kubernetes平台上,我们很少会直接创建一个Pod,因为直接管理单个Pod的工作量将会非常繁琐。我们可以使用KubernetesAPI创建工作负载对象,这些对象所表达的是比Pod更高级别的抽象概念,Kubernetes 控制平面根据我们定义的工作负载对象规......
  • 游戏开发(skynet框架):开服操作接入中央后台
    一个需求:控制游戏单服开服接入中央后台,支持定时(指定时间)、定量(当前已开放最新服的已注册数量)的方式;定时定量开服主要是中央后台功能,游戏服只需要接入控制开服逻辑。那么中央后台怎么通知游戏服;通过http协议;(skynet框架提供了http组件的支持,可以方便快速地搭建起来)对于滚服架构,......
  • skynet框架:关键流程的异常处理思路
    当一个执行流程存在对外调用时,我们讨论如何保证流程的可用和安全;假设流程是关键且强制原子性;--serviceAfunctionmain() step1() skynet.call(serviceB,"lua","step2") step3() returntrueend--serviceBfunctionCMD.step2() ...endcallserviceB动......
  • skynet框架:lua service支持监控告警
    问题场景是:服务A生产大量请求消息call到服务B,服务B瞬间达到消费能力的瓶颈,导致服务A堆积大量的yield状态协程,服务B消息队列堆积大量待处理消息,业务上出现卡顿、超时甚至物理机器内存吃满被瞬间击穿的问题;我们使用云服务器产品部署游戏业务,起因是游戏线上收到反馈在某些时间节点频......