当前位置: 首页 > news >正文

php后端实现调用高德地图进行POI搜索

对于当前位置或者选定省市位置进行查询

接口实现

/*** 查询地址* @ApiTitle    (查询地址)* @ApiSummary  (查询地址)* @ApiMethod   (POST)* @ApiRoute    (/api/demo/address)* @ApiParams   (name="dart", type="integer", required=true, description="省ID")* @ApiParams   (name="address", type="string", required=true, description="地区名称")* @ApiReturnParams   (name="code", type="integer", required=true, sample="0")* @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")* @ApiReturn   ({'code':'1','msg':'返回成功'})*/public function address(){$id = $this->request->param('dart');$address = $this->request->param('address');// 高德地图API接口地址$url = "https://restapi.amap.com/v3/place/text";      //poi搜索// API Key$key = "你自己在高德地图开放平台申请的应用key";// 搜索关键字$keyword = urlencode("$address");// 请求地址拼接$requestUrl = $url . "?key=" . $key . "&keywords=" . $keyword;// 发送请求并获取结果$curl = curl_init($requestUrl);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);$response = curl_exec($curl);curl_close($curl);// 解析JSON结果$result = json_decode($response, true);// 输出解析结果
//        $res = $result['pois'];//查询出当前传递的省市ID所涵盖的经纬度$find = db('area')->where('id', $id)->find();$data = [];
//        dump($result['pois']);exit();foreach ($result['pois'] as $k => $v) {$data[$k]['name'] = $v['name'];$data[$k]['address'] = $v['address'];$location = explode(',', $v['location']);$data[$k]['distance'] = (new Resource())::getDistance($find['lng'], $find['lat'], $location[0], $location[1], 2, 2);}// 使用 array_column 函数获取数组中某个字段的值$scores = array_column($data, 'distance');// 使用 array_multisort 对距离进行排序array_multisort($scores, SORT_ASC, $data);$this->success('获取成功', $data);}

其中用到的getDistance方法如下[精确计算]

/*** 计算两点地理坐标之间的距离* @param Decimal $longitude1 起点经度* @param Decimal $latitude1 起点纬度* @param Decimal $longitude2 终点经度* @param Decimal $latitude2 终点纬度* @param Int $unit 单位 1:米 2:千米* @param Int $decimal 精度 保留小数位数* @return Decimal*/public static function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=1, $decimal=2){$EARTH_RADIUS = 6370.996; // 地球半径系数$PI = 3.1415926;$radLat1 = $latitude1 * $PI / 180.0;$radLat2 = $latitude2 * $PI / 180.0;$radLng1 = $longitude1 * $PI / 180.0;$radLng2 = $longitude2 * $PI /180.0;$a = $radLat1 - $radLat2;$b = $radLng1 - $radLng2;$distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));$distance = $distance * $EARTH_RADIUS * 1000;if($unit==2){$distance = $distance / 1000;}return round($distance, $decimal);}

结果如图所示:

相关文章:

php后端实现调用高德地图进行POI搜索

对于当前位置或者选定省市位置进行查询 接口实现 /*** 查询地址* ApiTitle (查询地址)* ApiSummary (查询地址)* ApiMethod (POST)* ApiRoute (/api/demo/address)* ApiParams (name"dart", type"integer", requiredtrue, description"省…...

uniapp 实现滑动视图切换 顶部滚动导航栏

无论小程序的时候一般有这个功能,在页面处于首页时候,滑动视图,切换视图顶部滚动导航也跟着切换 1.想要实现这个功能就需要实现顶部导航栏,首先实现顶部滚导航栏 点击高亮颜色显示 模板代码 <scroll-view scroll-x"true" class"scroll-content" > …...

ArcGIS API for JavaScript 调用自定义地图模板总结

ArcGIS API for JavaScript 调用自定义地图模板总结 3.9版本4.24版本 3.9版本 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Hello World</title><link rel"stylesheet" href&qu…...

QGraphicsView实现简易地图5『经纬网格』

前文链接&#xff1a;QGraphicsView实现简易地图4『局部加载-地图漫游』 由于GCJ02 Web 墨卡托投影 纬度并不随像素等分&#xff0c;且两极跨度较大&#xff0c;因此本次演示采用的经纬网等分逻辑为等分像素。同等像素跨度之间&#xff0c;两级纬度变化较小&#xff0c;越靠近赤…...

RestTemplate 请求转发异常 ERR_CONTENT_DECODING_FAILED 200 (OK)

#1 问题描述 在基于Spring Boot的项目中实现了请求转发&#xff08;使用 RestTemplate 的 exchange 方法&#xff09;的功能&#xff0c;忽然在前端报net::ERR_CONTENT_DECODING_FAILED 200 (OK)的错误&#xff0c;后端及上游系统日志均显示请求已完成。 #2 原因探寻 上述错…...

用python实现一个异或计算器

有这样一条需求&#xff1a;计算某个文件中的数组每一行元素的最后一个参数&#xff0c;异或输出。 因为元素比较多&#xff0c;十几行&#xff0c;通过人工去计算异或值非常困难。 而在线异或的计算器&#xff0c;也需要人为输入这些数值&#xff0c;每次计算一个最终结果需…...

Sketch打不开AI文件?转换方法在这里

1、对比设计软件 Sketch 与 AI 软件功能 Sketch 与 Illustrator 都是行业内优秀的矢量图形设计软件&#xff0c;各有千秋。Sketch 从 2010 年面世&#xff0c;专注 APP 界面设计&#xff0c;深受初学者与专业人士喜爱。Illustrator 拥有更悠久的历史&#xff0c;是处理复杂图标…...

小游戏扫雷实现教学(详解)

目录 【前言】 一、模块化程序设计&#xff08;多文件编程&#xff09;介绍 1.概述 2.传统编程的方式 3.模块化程序设计的方法 二、扫雷代码设计思路 三、扫雷代码设计 1.创建菜单函数 2.实现9x9扫雷 3.初始化棋盘 4.打印棋盘 5.随机布置雷的位置 6.排查雷的信息 7.回…...

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…...

Centos7安装Docker

0.安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版&#xff08;免费&#xff0c;支持周期 7 个月&#xff09;&#xff0c;EE 即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道…...

Vue中如何更好地封装组件?

子组件接受父组件传递的事件 1.子组件使用事件名"$emit(父组件中传递的事件名,想给父组件传递的参数(可选))" click"$emit(click)" 2.子组件使用 v-on"$listeners" 父组件&#xff1a; <template><div id"app"><myCo…...

C语言的链表的相关操作

本变博客源于自己想复习一下C语言&#xff0c;所以便自己动手复习了一下链表的相关操作。做个人记录使用。 main.c #include <stdio.h> #include "list.h"int main() {student *a;printf("hello world\n") ;printf("----初始化列表----------\…...

Python3中typing模块

Python类型注解是Python 3.5版本之后引入的新特性&#xff0c;它可以让开发者在函数、变量等声明时为其指定类型。typing模型能够声明类型&#xff0c;防止运行时出现参数和返回值类型不符合的问题。 ### 1. 基本类型注解 def hello(name: str) -> str:return (Hello, na…...

C语言自动抓取淘宝商品详情网页数据,实现轻松高效爬虫

你是否曾经遇到过需要大量获取网页上的数据&#xff0c;但手动复制粘贴又太过费时费力&#xff1f;那么这篇文章就是为你而写。今天我们将会详细讨论如何使用C语言实现自动抓取网页上的数据。本文将会从以下8个方面进行逐步分析讨论。 1. HTTP协议的基本原理 在开始之前&…...

数据结构---跳表

目录标题 为什么会有跳表跳表的原理跳表的模拟实现准备工作find函数insert函数erase函数 测试效率比较 为什么会有跳表 在前面的学习过程中我们学习过链表这个容器&#xff0c;这个容器在头部和尾部插入数据的时间复杂度为O(1)&#xff0c;但是该容器存在一个缺陷就是不管数据…...

为什么Tomcat的NIO在读取body时要模拟阻塞?

文章首发地址 Tomcat的NIO完全可以以非阻塞方式处理IO&#xff0c;为什么在读取body部分时要模拟阻塞呢&#xff1f;在Tomcat的NIO读取HTTP请求时&#xff0c;为了保证请求的正确性和可靠性&#xff0c;需要模拟阻塞模式&#xff0c;这是因为servlet规范里定义了ServletInputSt…...

26 | 谷歌应用APP数据分析

基于kaggle公开数据集,对谷歌应用市场的APP情况进行数据探索和分析。 from kaggle: https://www.kaggle.com/lava18/google-play-store-apps 分析思路: 0、数据准备 1、数据概览 2、种类对Rating的影响 3、定价策略 4、因素相关性分析 5、用户评价 6、总结 0、数据准备 (…...

BFS 五香豆腐

题目描述 经过谢老师n次的教导&#xff0c;dfc终于觉悟了——过于腐败是不对的。但是dfc自身却无法改变自己&#xff0c;于是他找到了你&#xff0c;请求你的帮助。 dfc的内心可以看成是5*5个分区组成&#xff0c;每个分区都可以决定的的去向&#xff0c;0表示继续爱好腐败&…...

opencv实战项目 手势识别-手势控制键盘

手势识别是一种人机交互技术&#xff0c;通过识别人的手势动作&#xff0c;从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪&#xff08;定位手部关键点&#xff09; 2.opencv实战项目 实现手势跟踪并返回位置信息&#xff08;封装调用&am…...

1.作用域

1.1局部作用域 局部作用域分为函数作用域和块作用域。 1.函数作用域: 在函数内部声明的变量只能在函数内部被访问&#xff0c;外部无法直接访问。 总结&#xff1a; (1)函数内部声明的变量&#xff0c;在函数外部无法被访问 (2)函数的参数也是函数内部的局部变量 (3)不同函数…...

Snipe-IT开源IT资产管理系统:从混乱到有序的企业级解决方案

Snipe-IT开源IT资产管理系统&#xff1a;从混乱到有序的企业级解决方案 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 在IT运维的日常工作中&#xff0c;你是否经常面临…...

抖音视频下载终极指南:douyin-downloader完整使用教程

抖音视频下载终极指南&#xff1a;douyin-downloader完整使用教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...

宏基AS6530笔记本时序解析:从G3到S0的硬件启动密码

1. 宏基AS6530笔记本的硬件启动密码&#xff1a;从G3到S0的时序解析 当你按下笔记本电源键的那一刻&#xff0c;主板就像在解一道精密的数学题——每个电压和信号必须按照特定顺序出现&#xff0c;错一步就会导致启动失败。宏基AS6530采用的广达ZK3代工板&#xff0c;其启动时序…...

MaaYuan:如何让游戏日常任务变得智能且高效?

MaaYuan&#xff1a;如何让游戏日常任务变得智能且高效&#xff1f; 【免费下载链接】MaaYuan 代号鸢 / 如鸢 一键长草小助手 项目地址: https://gitcode.com/gh_mirrors/ma/MaaYuan 在现代手游生态中&#xff0c;日常任务系统已成为玩家体验的重要组成部分&#xff0c;…...

Pixel Script Temple 企业级应用:基于Java与数据库的批量图像生成系统

Pixel Script Temple 企业级应用&#xff1a;基于Java与数据库的批量图像生成系统 1. 电商批量图像生成的需求与挑战 在电商运营和内容创作领域&#xff0c;每天需要处理海量的商品图片和营销素材。传统的人工设计方式面临三大核心痛点&#xff1a;首先是人力成本高&#xff…...

【限时解禁】微软VS Code IntelliCode内核逆向文档(含未公开的Symbol Graph Embedding协议v3.2)

第一章&#xff1a;智能代码生成原理与架构解析 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成并非简单地拼接模板或检索已有片段&#xff0c;而是基于大规模代码语料训练的深度语言模型&#xff0c;对编程意图进行语义建模、上下文感知推理与结构化输出控制的系…...

别再只会用默认样式了!用matplotlib的boxplot函数,5分钟定制你的专属箱线图

别再只会用默认样式了&#xff01;用matplotlib的boxplot函数&#xff0c;5分钟定制你的专属箱线图 第一次用matplotlib画箱线图时&#xff0c;我盯着那个灰头土脸的方盒子看了半天——这玩意儿真的能放进报告里&#xff1f;后来才发现&#xff0c;boxplot()藏着无数宝藏参数&a…...

别再死记硬背了!用‘泰勒展开’和‘等价无穷小’一张图串联所有常用极限与求导

高数公式不再难记&#xff1a;用泰勒展开构建你的数学知识图谱 每次翻开高数课本&#xff0c;那些密密麻麻的极限公式和导数表是不是让你头皮发麻&#xff1f;sinx/x趋近于1&#xff0c;ln(1x)约等于x&#xff0c;这些看似毫无关联的结论背后&#xff0c;其实隐藏着一条统一的逻…...

如何用Mermaid Live Editor轻松创建可视化图表:5个步骤告别复杂绘图工具

如何用Mermaid Live Editor轻松创建可视化图表&#xff1a;5个步骤告别复杂绘图工具 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/me…...

华为MUX VLAN在企业多部门网络隔离中的实战部署

1. 为什么企业需要MUX VLAN技术 第一次接触MUX VLAN这个概念时&#xff0c;我也和很多网络工程师一样感到困惑&#xff1a;明明已经有普通VLAN和VLAN聚合技术了&#xff0c;为什么还要搞出个MUX VLAN&#xff1f;直到去年接手一个大型制造企业的网络改造项目&#xff0c;才真正…...