1.1.3 • Published 5 months ago

@medmotion-open/test-delet v1.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

简化 天地图的 web 服务 API 的使用

ts 编写的带有类型定义和注释,更加方便使用

浏览器

小程序

Node

node 环境需要设置 httpAdapter

小程序 需要添加安全域名 https://api.tianditu.gov.cn

支持的接口

地名搜索 V2.0 (开发中) 类型定义部分支持

公交规划 (开发中)

地理编码接口

逆地理编码查询

行政区划服务 (开发中)

驾车规划 (开发中)

静态地图 API (开发中)

地图 API (开发中)

网页 API (开发中)

用法

new T_MAP(key,options:Options)

参数类型是否必须用处
keystringytk
optionsOptionsn可选配置

Options

参数类型是否必须用处
httpAdapterFunn ,node 环境必须自定义请求
proxystringn代理地址

示例

import T_MAP from '@medmotion-open/tdt';

try {
  const map = new T_MAP(key);

  const res = await map.gencode({
    keyWord: '北京市延庆区延庆镇莲花池村前街50夕阳红养老院',
  });
  console.log(res);

  // 或

  const res = map
    .gencode({
      keyWord: '北京市延庆区延庆镇莲花池村前街50夕阳红养老院',
    })
    .then((res) => {
      console.log(res);
    });
} catch (error) {
  console.error(error);
}

// node 引入
const T_MAP = require('@medmotion-open/tdt-node');
const axios = require('axios'); // 也可以用别的

const map = new T_MAP(key, {
  httpAdapter: axios.get,
});

const res = await map.gencode({
  keyWord: '北京市延庆区延庆镇莲花池村前街50夕阳红养老院',
});

使用代理

proxy

如果你想用自己的代理地址

import T_MAP from '@medmotion-open/tdt';

import axios from 'axios'; // 也可以用别的

const map = new T_MAP(key, {
  proxy: 'http://api.tianditu.gov.cn', // 换成你自己的
});

使用自己的网络请求体

如果想嵌入自己项目,统一网络请求,可以使用 httpAdapter

这里示例为 axios,可以用自己的 GET 请求即可

但是返回结果需要自己处理

httpAdapter(url);

// 貌似官网的大多为 get 请求,所以这里返回了拼接好的 url

// 后续会考虑暴露为

const obj = {
  url: '',
  type: '',
  params: {},
};

使用如下

import T_MAP from '@medmotion-open/tdt';

import axios from 'axios'; // 也可以用别的

const map = new T_MAP(key, {
  httpAdapter: axios.get,
});

const res = await map.gencode({
  keyWord: '北京市延庆区延庆镇莲花池村前街50夕阳红养老院',
});

刚刚打算做个简化的使用

也是第一次尝试写个 ts 类型定义的插件包

可能比较慢,但可以自己引用 baseRequest 来使用

用法如下

如官方示例为 http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}&tk=您的密钥

import T_MAP from '@medmotion-open/tdt';
const map = new T_MAP(key);
const ds = JSON.stringify({
  keyWord: '北京市延庆区延庆镇莲花池村前街50夕阳红养老院',
}); // 自己处理参数
map.baseRequest({
  url: 'geocoder',
  params: {
    ds,
  },
});

// node 引入
const T_MAP = require('@medmotion-open/tdt-node');
const axios = require('axios'); // 也可以用别的

interface GenCodeReq {
  location: {
    /**
     * 检索时的keyWord
     */
    keyWord: string;
    /**
     * 坐标点显示经度
     */
    lon: string;
    /**
     * 坐标点显示纬度
     */
    lat: string;
    /**
     * 类别名称
     */
    level?: string;
    /**
     * 附近相似点  开启周边查询必需返回。
     */
    typeRound?: string;
  };
}

map.baseRequest<GenCodeReq>({
  url: 'geocoder',
  params: {
    ds,
  },
});
1.1.3

5 months ago