微信小程序地图展示区轮廓+展示指定地区标点气泡

需求:显示当前地区所有的学校列表:名称。区域显示区域名称+下面所属学校数量

根据用户缩小放大当前区域(大于12显示区,小于12显示当前区学校列表),获取:@regionchange的type:end数据,来获取坐标,逆解析获取地址的区,然后传到后端返回当前区的学校数据,然后后端这边由于是新需求就没有经纬度的数据,后端就去命令行操作根据学校的地址得到经纬度然后更新到数据库

<?php
namespace app\admin\command\school;

use fast\Http;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use app\common\model\School;

class LatLng extends Command
{
    protected function configure()
    {
        $this->setName('school:latLng')
            ->setDescription('学校地址获取经纬度');
    }

    protected function execute(Input $input, Output $output)
    {
	        School::where($where)->chunk(50, function($rows) {
            foreach ($rows as $row) {
                if ($row['deletetime']) {
                    continue;
                }
                $address = $row['school_address'];
                $params = [
                    'address' => $address,
                    'key'     => "你的KEY你的KEY你的KEY你的KEY你的KEY你的KEY"
                ];
                $url = 'https://apis.map.qq.com/ws/geocoder/v1/';
                $result = Http::get($url, $params);


                $akl = json_decode($result,TRUE);
                if($akl['status'] != 0){
                    continue;
                }
                if($row['lat']){
                    continue;
                }
                $data = [
                    'lat' => $akl['result']['location']['lat'],
                    'lng' => $akl['result']['location']['lng'],
                ];

                $menu = new School;
                $menu->where('id',$row['id'])->update($data);
            }
        });
    }
}

这里是前端案例
后端返回markers的数据格式也跟目前markers的数据结构一样
polygon的数据,后端返回的也是一样的结构
polygon的数据需要去阿里云数据可视化平台获取,然后下载,还需要处理一下
阿里云数据可视化平台
map里的longitude以及latitude应该是动态的,根据当前scale判断是否应该展示当前区的中心经纬度,如果小于12那么就应该是深圳市的中心经纬度
在这里插入图片描述
下载后再去按照下面polygon数据格式修改即可
polygon的数据格式
取这个即可
在这里插入图片描述

修改
在这里插入图片描述

<template>
	<view class="content">
		<map id="myMap" style="width: 100%; height: 800px;" 
		longitude="114.046594" latitude="22.543431"
		:scale="scale"
		:markers="markers" show-location
		@callouttap="callouttap"
		@regionchange="regionchange"
		:polygons="polygon"
		></map>
		
	</view>
</template>

<script>
	export default {
		data() {
			return {
				scale:12,
				markers: [
					{
									"id": 9,
									"latitude": "22.5452",
									"longitude": "114.01952",
									"title": "深圳市",
									"iconPath": "/static/uploads/wzdt.png",
									"width": 15,
									"height": 20,
									"alpha": 1,
									"callout": {
										"content": "深圳市",
										"color": "#ffffff",
										"fontSize": 12,
										"borderRadius": 12,
										"padding": 10,
										"bgColor": "#87B0FF",
										"display": "ALWAYS",
										"anchorY": -2
									}
								},
								{
									"id": 11,
									"latitude": "22.55257",
									"longitude": "114.01582",
									"title": "中学",
									"iconPath": "/static/uploads/wzdt.png",
									"width": 15,
									"height": 20,
									"alpha": 1,
									"callout": {
										"content": "中学",
										"color": "#ffffff",
										"fontSize": 12,
										"borderRadius": 12,
										"padding": 10,
										"bgColor": "#87B0FF",
										"display": "ALWAYS",
										"anchorY": -2
									}
								}
				],
				
				polygon:
				[
				{
				points:[
				{longitude:114.066304, latitude:22.585671},
				{longitude:114.06212, latitude:22.586477},
				{longitude:114.059393, latitude:22.587533},
				{longitude:114.057709, latitude:22.586393},
				{longitude:114.054639, latitude:22.58529},
				{longitude:114.053745, latitude:22.584624},
				{longitude:114.053534, latitude:22.582235},
				{longitude:114.052561, latitude:22.581747},
				{longitude:114.047518, latitude:22.582408},
				{longitude:114.045317, latitude:22.584163},
				{longitude:114.041098, latitude:22.583907},
				{longitude:114.038204, latitude:22.582971},
				{longitude:114.034301, latitude:22.582626},
				{longitude:114.03032, latitude:22.580564},
				{longitude:114.028066, latitude:22.581458},
				{longitude:114.023514, latitude:22.581649},
				{longitude:114.022154, latitude:22.580289},
				{longitude:114.018866, latitude:22.579074},
				{longitude:114.014875, latitude:22.579554},
				{longitude:114.009464, latitude:22.57886},
				{longitude:114.005272, latitude:22.57514},
				{longitude:114.005017, latitude:22.571443},
				{longitude:114.005421, latitude:22.568235},
				{longitude:114.004061, latitude:22.56627},
				{longitude:114.003342, latitude:22.563183},
				{longitude:114.003939, latitude:22.560478},
				{longitude:114.005386, latitude:22.558312},
				{longitude:114.0055, latitude:22.556343},
				{longitude:114.002895, latitude:22.555775},
				{longitude:114.001202, latitude:22.555788},
				{longitude:113.99758, latitude:22.554946},
				{longitude:113.998422, latitude:22.553879},
				{longitude:113.998168, latitude:22.552086},
				{longitude:113.998852, latitude:22.55014},
				{longitude:113.999878, latitude:22.549744},
				{longitude:113.999562, latitude:22.548957},
				{longitude:113.997729, latitude:22.54864},
				{longitude:113.99623, latitude:22.546792},
				{longitude:113.997203, latitude:22.545008},
				{longitude:113.996703, latitude:22.543304},
				{longitude:113.996721, latitude:22.538633},
				{longitude:113.99787, latitude:22.532396},
				{longitude:113.99544, latitude:22.53296},
				{longitude:113.996151, latitude:22.53207},
				{longitude:113.995484, latitude:22.530533},
				{longitude:113.994353, latitude:22.530566},
				{longitude:113.9933, latitude:22.527678},
				{longitude:113.994388, latitude:22.521926},
				{longitude:113.990547, latitude:22.520482},
				{longitude:113.990748, latitude:22.510584},
				{longitude:114.010551, latitude:22.510249},
				{longitude:114.024049, latitude:22.509806},
				{longitude:114.025163, latitude:22.509331},
				{longitude:114.0291, latitude:22.505265},
				{longitude:114.030898, latitude:22.504277},
				{longitude:114.036967, latitude:22.503364},
				{longitude:114.042107, latitude:22.502791},
				{longitude:114.046009, latitude:22.502185},
				{longitude:114.050587, latitude:22.501193},
				{longitude:114.053789, latitude:22.499889},
				{longitude:114.057077, latitude:22.499623},
				{longitude:114.05998, latitude:22.500727},
				{longitude:114.062322, latitude:22.502824},
				{longitude:114.06298, latitude:22.507827},
				{longitude:114.064602, latitude:22.510547},
				{longitude:114.069119, latitude:22.51378},
				{longitude:114.077003, latitude:22.515484},
				{longitude:114.079205, latitude:22.514394},
				{longitude:114.080301, latitude:22.512997},
				{longitude:114.081573, latitude:22.512424},
				{longitude:114.084291, latitude:22.513388},
				{longitude:114.087642, latitude:22.515899},
				{longitude:114.090299, latitude:22.51943},
				{longitude:114.090343, latitude:22.520995},
				{longitude:114.088177, latitude:22.522932},
				{longitude:114.085949, latitude:22.523878},
				{longitude:114.083485, latitude:22.526113},
				{longitude:114.08402, latitude:22.527553},
				{longitude:114.085686, latitude:22.528414},
				{longitude:114.088256, latitude:22.528712},
				{longitude:114.090352, latitude:22.529318},
				{longitude:114.091246, latitude:22.530068},
				{longitude:114.092904, latitude:22.532545},
				{longitude:114.094114, latitude:22.53357},
				{longitude:114.097245, latitude:22.534404},
				{longitude:114.100148, latitude:22.532192},
				{longitude:114.101946, latitude:22.531241},
				{longitude:114.105173, latitude:22.531628},
				{longitude:114.104805, latitude:22.532513},
				{longitude:114.104586, latitude:22.546033},
				{longitude:114.104279, latitude:22.555435},
				{longitude:114.104559, latitude:22.555933},
				{longitude:114.104524, latitude:22.567872},
				{longitude:114.101604, latitude:22.566261},
				{longitude:114.096833, latitude:22.56491},
				{longitude:114.093193, latitude:22.564328},
				{longitude:114.092237, latitude:22.564463},
				{longitude:114.090159, latitude:22.567639},
				{longitude:114.088001, latitude:22.569557},
				{longitude:114.084616, latitude:22.570302},
				{longitude:114.082625, latitude:22.570186},
				{longitude:114.079099, latitude:22.568519},
				{longitude:114.077968, latitude:22.569436},
				{longitude:114.077284, latitude:22.571168},
				{longitude:114.075942, latitude:22.572467},
				{longitude:114.074425, latitude:22.575303},
				{longitude:114.074399, latitude:22.576132},
				{longitude:114.07225, latitude:22.579181},
				{longitude:114.070522, latitude:22.579987},
				{longitude:114.069005, latitude:22.581216},
				{longitude:114.066304, latitude:22.585671}
				],
				fillColor: "#4F94CD33",
				strokeColor: "#3367D1",
				strokeWidth: 2,
				zIndex: 5
				}
				]
				
				// 结束
			}
		},
		onShow() {
			
		},
		onLoad() {
			this.getschool()
		},
		methods: {
			getschool() {
				
				this.$u.post('XXXX').then(res => {
					console.log("请求数据",res);
					// this.markers = res.schoollist
				})
			},
			callouttap(e){
				console.log("callouttap",e);
			},
			regionchange(e){
				console.log("regionchange",e);
			}
		}
		
		
	}
</script>

<style>
</style>

结果图

在这里插入图片描述
区里面学校列表
在这里插入图片描述
polygons的数据,前端还没写上去,跟在阿里云数据可视化平台看到的一样,只是颜色不同

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中央处理器CPU(1)----指令周期和微程序

前言&#xff1a;由于期末复习计算机组成效率太慢所以抽时间写一下文章总结一下思路&#xff0c;理解不是很深&#xff0c;欢迎各位不吝赐教。 由于时间不是很充分&#xff0c;所以有些考点由于我们不考试&#xff0c;一笔带过了。 我这是期末复习总结&#xff0c;不是考研知识…

【BIAI】Lecture 7 - EEG data analysis

EEG data analysis 专业术语 EEG 脑电图 excitatory postsynaptic potential(EPSP)兴奋性突触后电位 inhibitory postsynaptic potential(IPSP) 抑制性突触后电位 action potential 动作电位 dipoles 偶极子 Pyramidal neurons 椎体细胞 Axon 轴突 Dendrite 树突 Synapse 突触…

python 识别验证码图片

描述&#xff1a;利用cv2和百度的aipocr 识别有噪点的验证码图&#xff0c;百度aip需要自己注册&#xff0c;把密钥替换为自己的即可 百度智能云 测试用的图片 # encoding: utf-8 from PIL import Image # 调用百度OCR接口识别验证码 from aip import AipOcr class preserv…

R语言下载安装及VScode配置

文章目录 1. R 下载和安装1.1 下载1.2 安装 2. VSCODE 配置2.1 安装R拓展2.2 安装R语言辅助功能包2.3 DEBUG 1. R 下载和安装 1.1 下载 网址&#xff1a;https://www.r-project.org/ 选择一个镜像地址下载 选择对应的版本 一般选择base即可 1.2 安装 下载安装包后按提示安装…

2.【CPP】入门(宏||内联函数||拷贝构造||析构函数||构造函数)

0x01.引言 1.实现一个宏函数ADD #define ADD(x,y) ((x)(y))//宏是预编译阶段完成替换&#xff0c;注意括号2.宏的优缺点 优点&#xff1a; 1.增强代码的复用性 2.宏函数不用建立栈帧&#xff0c;提高性能 缺点&#xff1a; 1.不方便调试 2.没有安全检查 0x02.内联函数 1.以空…

SpringCloud系列篇:核心组件之熔断器组件

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 前言 在微服务架构中&#xff0c;一个应用往往由多个服务组成&#xff0c;这些服务之间相互依赖&#xff0c;依赖关系错综复杂。 例…

three.js 关键帧动画

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right"…

二维激光雷达

目录 前言 1 单线激光雷达 激光器 接收器 信号处理单元 旋转机构 2 单线激光雷达原理 2.1 三角测距法 1、直射式 2、斜射式 2.2 TOF飞行时间测距法 总结 前言 开始干活啦&#xff0c;单线激光雷达&#xff0c;三维知道原理&#xff0c;但不研究了&#xff0c;问就是买不起。 1 …

【JaveWeb教程】(19) MySQL数据库开发之 MySQL数据库操作-DML 详细代码示例讲解

目录 3. 数据库操作-DML3.1 增加(insert)3.2 修改(update)3.3 删除(delete)3.4 总结 3. 数据库操作-DML DML英文全称是Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增、删、改操作。 添加数据&#xff08;INSERT&#xff09;修改数据…

mybatis-flex与springBoot整合

mybatis-flex基本使用 1.测试sql2.导入坐标3.框架搭建1.pojo层2.mapper层3.service层4.controller层5.启动类6.配置类7.EmpMapper.xml 4.启动测试 本片文章在springBoot3&#xff0c;jdk21下测试通过 注意官方网站为&#xff1a;https://mybatis-flex.com/ 请点击&#xff1a;直…

【C++】C++11中的常见语法(上)

C11 一、C11简介二、统一的列表初始化1.&#xff5b;&#xff5d;初始化2. std::initializer_list 三、声明1. auto2. decltype3. nullptr 四、右值引用和移动语义1. 左值引用和右值引用2. 左值引用与右值引用比较3. 右值引用使用场景和意义4. 右值引用引用左值及其一些更深入的…

如何使用Postman创建Mock Server?

这篇文章将教会大家如何利用 Postman&#xff0c;通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧&#xff0c;可以在没有依赖项的情况下进行单元测试。通常情况下&#xff0c;Mock 与其他方法的主要区别就是&#xff0c;用于取代代码依赖项的模拟对…

Vue3 + TS + Element-Plus —— 项目系统中封装表格+搜索表单 十分钟写五个UI不在是问题

前期回顾 纯前端 —— 200行JS代码、实现导出Excel、支持DIY样式&#xff0c;纵横合并-CSDN博客https://blog.csdn.net/m0_57904695/article/details/135537511?spm1001.2014.3001.5501 目录 一、&#x1f6e0;️ newTable.vue 封装Table 二、&#x1f6a9; newForm.vue …

【数据库】视图索引执行计划多表查询笔试题

文章目录 一、视图1.1 概念1.2 视图与数据表的区别1.3 优点1.4 语法1.5 实例 二、索引2.1 什么是索引2.2.为什么要使用索引2.3 优缺点2.4 何时不使用索引2.5 索引何时失效2.6 索引分类2.6.1.普通索引2.6.2.唯一索引2.6.3.主键索引2.6.4.组合索引2.6.5.全文索引 三、执行计划3.1…

性能测试中TPS上不去的几种原因浅析

昨晚在某个测试群看到有人问了一个问题&#xff1a;压力测试中TPS一直上不去&#xff0c;是什么原因&#xff1f;稍微整理了下思路&#xff0c;列举性的简略回答了他的问题。 这篇博客&#xff0c;就具体说说在实际压力测试中&#xff0c;为什么有时候TPS上不去的原因。如有遗…

一包多语言——使用FontForge合并字体

大家好&#xff0c;我是阿赵。   比较多游戏做了一个游戏包里面包含了多种语言&#xff0c;可以游戏内切换。这里分享一个合并多种语言字体的方法。 一、遇到的问题 假设我们游戏需要同时显示简体中文、泰文、老挝文三种语言。 解决方案有多种&#xff1a; 1、准备多种字体 …

【清华社机器之心】视频生成前沿研究与应用特别活动

在视频生成即将迎来技术和应用大爆发之际&#xff0c;为了帮助企业和广大从业者掌握技术前沿&#xff0c;把握时代机遇&#xff0c;机器之心AI论坛就将国内的视频生成技术力量齐聚一堂&#xff0c;共同分享国内顶尖力量的技术突破和应用实践。 论坛将于2024.01.20在北京举办&am…

FineBI实战项目一(18):每小时上架商品个数分析开发

点击新建组件&#xff0c;创建每小时上架商品个数组件。 选择线图&#xff0c;拖拽cnt&#xff08;总数&#xff09;到纵轴&#xff0c;拖拽hourStr到横轴。 修改横轴和纵轴的文字。 调节连线样式。 添加组件到仪表板。

ride导入常用的库

1、打开程序 安装ride成功后&#xff0c;直接在cmd中打开&#xff0c;过程中可以捕获到日志记录 输入&#xff1a;ride.py 2、新建测试套件 右键文件夹&#xff0c;选择--》new Suite 3、导入 Library 导入成功的是黑色&#xff0c;失败的是红色&#xff0c;可以再cmd中查看…

Jenkins基础篇--添加节点

节点介绍 Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点)&#xff0c;分布式构建能够让同一套代码在不同的环境(如&#xff1a;Windows 和 Linux 系统)中编译、测试等。 Jenkins 运行的主机在逻辑上是 master 节点&#xff0c;下图是主节点和从节点的关系。 添加节点 …