4.0.7 • Published 1 year ago

@truckhome/global-position v4.0.7

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

global-position(自有白名单可用)

文档

百度 api 官方文档 百度服务类 高德 api 官方文档 高德服务类 api

项目说明

全局定位统一脚本,pc(ip 定位),m 站(ios,高德定位、安卓,h5 gps 定位)、app(ios,app 定位、安卓,百度普通定位)

说明

  1. M 端定位-iOS 使用百度定位、Android 如果有 h5 原生定位使用 h5 定位,否则使用 ip 定位。
  2. 微信使用微信定位。如果没有声明,使用 M 端定位
  3. app 使用 UA 中的经纬度。如果没有经纬度,调用 app 定位方法
  4. pc 使用 ip 定位

项目运行

webpack5 + ts

pnpm i
pnpm dev

调用说明

// 默认数据
{
  "status": 0,
  "data": {
    "province": { "id": 0, "name": "全国", "enFirst": "" },
    "city": {
      "id": 0,
      "name": "",
      "sName": "",
      "enFirst": ""
    },
    "district": { "id": 0, "name": "" },
    "position": { "longitude": 0, "latitude": 0 }
  },
  "msg": "success"
}
npm i @truckhome/global-position
import { GlobalPosition } from '@truckhome/global-position'

// cdn地址:
<script src="https://unpkg.com/@truckhome/global-position@version/dist/global-position-umd.min.js"></script>


const g = GlobalPosition({
  immediate? // 默认false, 是否立即重新获取定位
  noCookie? // (后续会弃用)默认false, 是否不使用cookie 等同于immediate
  cookieTime? // 缓存时间
  ip? // 服务端使用该参数 传入客户端ip (ip获取经纬度接口会使用传入ip)
  success: (data, point) => {
    // 只有获取到城市信息才会执行
    console.log('先执行111', data)
  },
  error: (err, point, result) => {
    // 经纬度获取失败、ip定位失败、没有获取到城市信息都会执行
    // point 如果有就会返回没有就是 0 0
    // result基本是默认的数据结构。也可以通过实例上的result获取
    // g.result === result
    console.log('请求错误', err, point, result)
  }
})

// 或者
// successCallback -> data.success
// errorCallback -> data.error
const g = GlobalPosition(data?, successCallback, errorCallback)
const g = GlobalPosition(successCallback, errorCallback)

// 全局实例对象
window.globalPositionInstance === g
window.isDev = true // 是否开发环境

// 增加坐标转换方法
import { bdTranslate, bd2gd, gd2bd } from '@truckhome/global-position'

/**
 * point: {lng,lat}
 * from:
 *  1, GPS标准坐标
 * 2, 搜狗地图坐标
 *  3,火星坐标(gcj02),即高德、腾讯、MapABC等
 * 4, 3中列举的地图坐标对应的墨卡托平面坐标
 * 5, 百度地图采用的经纬度坐标(bd09)
 *  6,百度地图采用的墨卡托平面坐标
 * 7,图吧地图坐标
 *  8,51地图坐标
 *
 * to:
 * 3, 火星坐标(gcj02),即高德、腾讯地图及MapABC等
 * 5, 百度地图采用的经纬度坐标(bd09)
 * 6, 百度地图墨卡托平面坐标
 * callback: (data: {status: number, point: { lat: number; lng: number }) => void // status: 0 成功
 */
bdTranslate({lng,lat}, 1, 5, function(data){
  console.log(data)
})

bd2gd(lng, lat) -> {lng, lat}

gd2bd(lng, lat) -> {lng, lat}

描述

  1. 只调用一次接口返回城市信息,如果有结果了,直接返回结果
  2. cookie 缓存 5 分钟,如果有结果了,直接返回结果
  3. 客户端使用原生 xhr、服务端使用 axios 请求,需要 axios
<script>
  // ie 兼容 object.assign
  if (typeof Object.assign !== 'function') {
    Object.assign = function (target) {
      'use strict'
      if (target === null) {
        throw new TypeError('Cannot convert undefined or null to object')
      }
      target = Object(target)
      for (var index = 1; index < arguments.length; index++) {
        var source = arguments[index]
        if (source !== null) {
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key]
            }
          }
        }
      }
      return target
    }
  }
</script>
// 服务端使用需要全局axios
<script src="https://unpkg.com/axios@0.27.2/dist/axios.min.js"></script>

更新时间

  • 2022-06-17

  • 2022-06-20

    新增 translatePoint 函数。修改 d.ts 生成方式

  • 2022-06-22

    兼容 ie promise

  • 2022-06-26

    兼容服务端使用 ip 定位

  • 2022-07-05

    传入 ip 使用传入的 ip 获取经纬度 在服务端使用的话,需要立即执行 immediate: true。否则服务端渲染就会保留定位信息在服务器

  • 2022-08-30

    兼容业务

  • 2022-09-06

    百度定位

  • 2022-10-12

    修改默认 errResult 到 errmsg

  • 2022-11-04

    修改 Android-m 端 gps 请求后,去除百度接口进行 point s 转换超限问题 gps 失败后通过 ip 定位

  • 2022-11-08

    修改 iOS-m 端,优先浏览器定位,失败后使用 ip 定位

  • 2022-11-10

    m 端 gps 失败后,使用 ip 定位。修改全局状态

3.0.0

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.7

1 year ago

4.0.6

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

3.0.0-alpha.7

2 years ago

3.0.0-alpha.6

2 years ago

3.0.0-alpha.9

2 years ago

3.0.0-alpha.8

2 years ago

3.0.0-alpha.13

2 years ago

3.0.0-alpha.1

2 years ago

3.0.0-alpha.3

2 years ago

3.0.0-alpha.2

2 years ago

3.0.0-alpha.5

2 years ago

3.0.0-alpha.4

2 years ago

3.0.0-alpha.10

2 years ago

3.0.0-alpha.12

2 years ago

3.0.0-alpha.11

2 years ago

2.1.0-alpha.0

2 years ago

2.0.0

2 years ago

2.0.0-alpha.6

2 years ago

2.0.0-alpha.5

2 years ago

2.0.0-alpha.4

2 years ago

2.0.0-alpha.3

2 years ago

2.0.0-alpha.2

2 years ago

2.0.0-alpha.1

2 years ago

2.0.0-beta.0

2 years ago

1.0.6-alpha

2 years ago

1.0.5-alpha

2 years ago

1.0.4-beta

2 years ago

1.0.3-beta

2 years ago

1.0.2-beta

2 years ago

1.0.1-beta

2 years ago

1.0.0-beta

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago