# 对接说明

## 业务方使用小程序 API

> 业务流程路径：微信小程序-小程序首页-跳转 h5 页面-跳转小程序页面-调用 API

1. 使用微信内置地图查看位置

```js
import qs from "qs"; // 用于处理 url 参数

let callApi = "openLocation";
let apiOptions = {
  latitude: 22.543541, // 深圳市人民政府经纬度
  longitude: 114.057969, // 深圳市人民政府经纬度
};
let path = "/pages/webview/callWxApi";
let query = {
  callApi, // 必填，小程序api名称，参照微信官方文档
  ...apiOptions, // 必填，小程序api所需参数，参照微信官方文档
};
let url = `${path}?${qs.stringify(query)}`; // 转成url参数形式，例如`/pages/payment/wxPay?api=xx&appId=xx`
wx.miniProgram.navigateTo({
  url: url,
});
```

```
/pages/webview/callWxApi?callApi=openLocation&latitude=23.11779&longitude=113.34917&name=%E7%8F%A0%E5%85%89%E6%96%B0%E5%9F%8E%E5%BE%A1%E6%99%AF%E4%BA%8C%E6%9C%9F
```

## 业务方链接跳转

> 业务流程路径：微信小程序-小程序首页-跳转 h5 页面

> 小程序页面路径参数说明

```js
import qs from "qs"; // 用于处理 url 参数

let appid = "wxb24230254f5989b6"; // 小程序的 appid
let path = "/pages/home/index"; // 小程序的页面 path
let query = {
  url: "https://xxx", // 必填，业务方H5链接
  p: "th_ssp", // 必填，业务方标识，固定值
  lowPower: "1", // 选填，操作权限（需要白名单用户传 0，需要登录传 1，不需要登录传 2）
}; // 小程序的 query

// 如果query是string类型，则需要先对参数进行 encodeURIComponent 编码
let url = `${path}?${qs.stringify(query)}`; // 转成url参数形式，例如`/pages/home/index?url=https%3A%2F%2Fxxx&p=th_zsdjh&lowPower=1`
// 小程序完整路径跳转
wx.miniProgram.navigateTo({
  url: url,
});

// 示例一：跳转到百度搜索页面-搜索微信小程序
let path = "/pages/home/index"; // 小程序的页面 path
let query = {
  url: "https://www.baidu.com/s?wd=微信小程序",
  p: "unknow",
  lowPower: "1",
};
let url = `${path}?${qs.stringify(query)}`;
wx.miniProgram.navigateTo({
  url: url,
});
```

## 业务方使用原生地图选择位置（地图选点）

> 业务流程路径：微信小程序-点击服务-跳转 h5 页面-跳转小程序页面-选择位置

1. 跳转到小程序页面

```js
let path = "/pages/location/chooseLocation";
let query = {
  dealPage: "", // 选填，回跳地址
};
let url = `${path}?${qs.stringify(query)}`; // 转成url参数形式，例如`/pages/payment/wxPay?appId=xx&dealPage=xx`
wx.miniProgram.navigateTo({
  url: url,
});
```

2. 用户选择完位置后，页面回跳到业务方指定地址（dealPage），携带位置信息

示例：

```
https://superdesk.avic-s.com/super_cloud/wx/property/#/demo/userChooseLocation?code=SUCCESS&chooseLocation=22.71991%2C114.24779%2C%E5%B9%BF%E4%B8%9C%E7%9C%81%E6%B7%B1%E5%9C%B3%E5%B8%82
```

参数说明

```
{
  code: 'FAIL', // 必传，选择结果，取值：SUCCESS, FAIL
  chooseLocation: '', // 可选，位置信息，格式：latitude,longitude,address,name
}

```

3. 业务方 H5 页面接收到位置信息（chooseLocation），自行处理

```js
const url = window.location.href;
const urlParams = new URLSearchParams(url.split("?")[1]);
const locationParam = urlParams.get("chooseLocation");
const [latitude, longitude, address, name] = locationParam.split(",");
console.log(latitude, longitude, address, name);
```

相关：[小程序 打开地图选择位置](https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.chooseLocation.html)
