import { $mapKey } from "@/http/apiManager.js"
import address from "@/components/applyJson/address.json" // 地址

/***
 * 使用 Promise 风格对逆地理编码进行封装
 * 入参 address 地理位置 type0地区码  1 经纬度
 *
 * */
export const getMapKey = (address, type) => {
  return new Promise((res, rej) => {
    $mapKey()
      .then(({ bizData }) => {
        return bizData.apiMapWebServiceKey
      })
      .then((key) => {
        return new Promise((res, rej) => {
          uni.request({
            url: "https://restapi.amap.com/v3/geocode/geo", // 调用高德接口
            data: {
              key,
              address,
            },
            success: ({ data }) => {
              switch (type) {
                case 0:
                  if (data.status == 1) return res({ code: data.geocodes[0].adcode, text: data.geocodes[0].district })
                  break
                case 1:
                  if (data.status == 1)
                    return res({
                      lat: data.geocodes[0].location.split(",")[1],
                      lon: data.geocodes[0].location.split(",")[0],
                      flag: true,
                    })
                  break
              }
              console.log("res", data)
            },
            fail: (err) => {
              console.log(err, "error")
            },
          })
        })
      })
      .then((val) => {
        if (val.flag) res(val)
        res(inverse(val.code, val.text))
      })
  })
}

const inverse = (code, text) => {
  let lastReg = new RegExp(code) // 将要用于正则匹配
  let result = address.find((item) => {
    // 获取省级信息
    return lastReg.test(JSON.stringify(item))
  })

  let secondContent = result.children.find((item) => {
    // 获取市级信息
    return lastReg.test(JSON.stringify(item))
  })
  return { code: [result.value, secondContent.value, code], text: [result.text, secondContent.text, text].join("/") }
}
