点餐小程序实战教程19获取餐厅经纬度

文摘   2024-10-10 20:00   内蒙古  

我们在餐厅管理篇幅介绍了用腾讯地图去获取餐厅的地址信息,实测的话生成的经纬度长度过长,在我们后续计算距离的时候使用不太方便。本篇我们重新调整一下功能,使用高德地图去获取经纬度。

1 调整表结构

打开我们已经建好的数据源,增加餐厅地址、经度、纬度字段。经度、纬度类型选择数字

2 创建API

我们后端API编写的原理是,通过传入餐厅地址解析出餐厅的经纬度信息,这就需要调用高德地图的地址解析接口

打开我们的API,在餐厅管理里增加地址解析的API

URL输入如下地址:

https://restapi.amap.com/v3/geocode/geo?parameters

method选择GET

入参输入key和address

这里需要注意的是,我们的入参要先建立,之后在Query部分要将key和我们的入参对应上

建立好之后点击方法测试,输入我们的入参,执行成功后点击出参映射,完成出参的编写

3 调整后台功能

我们字段增加好之后,因为功能已经创建好了,需要重新调整一下。首先切换到列表页面,选中我们的表格组件,点击数据源的刷新按钮

将我们刚刚添加的字段添加好

切换到编辑页面,选中我们的表单容器组件,勾选新添加的字段

勾选后我们需要在餐厅地址旁边增加一个按钮调用我们的API,并且自动填充到经纬度字段里,布局结构如下

设置普通容器的布局为横向排列,垂直居中

4 创建变量

需要创建两个变量,分别用来保存经度和纬度信息,变量的类型选择数字

5 创建自定义方法

在点击按钮的时候我们要调用编制的自定义方法,执行调用我们的后端API,并且解析出经纬度,赋值给变量

export default async function ({ event, data }) {  const address = $w.input2.value  if (!address) {    $w.utils.showToast({      title: "请输入地址",      icon: "error",      duration: 2000    })  }  const result = await $w.cloud.callDataSource({    dataSourceName: 'ctgl_jb3folg',    methodName: 'getGeoByAddress',    params: {      key: "154efad00",      address: address    } // 方法入参  });  const geopoint = result.geocodes[0].location  if (!geopoint) {    $w.utils.showToast({      title: "没有获取到经纬度",      icon: "error",      duration: 2000    })  }  $w.page.dataset.state.longitude = geopoint.split(",")[0]  $w.page.dataset.state.latitude = geopoint.split(",")[1]  console.log($w.page.dataset.state.latitude, $w.page.dataset.state.longitude)}

创建好自定义方法,给按钮绑定点击事件

最后给经度和纬度的输入框绑定输入值即可

6 获取经纬度

餐厅地址需要我们先从百度地图里获取标准地址,打开百度地图,搜索你需要的地点,贴入地图的精准地址

将地址贴入到我们的表单中,点击按钮即可自动填充我们的经纬度信息

总结

本篇我们结合高德地图的地址解析接口,实现了将文本地址信息解析出经纬度。日常开发中还有各种各样的功能需要集成,主要思路是查看第三方的接口,找到最接近需求的,然后结合微搭的API进行开发。



低代码布道师
分享微搭低代码使用教程,提问交流+知识星球50556232
 最新文章