简化 天地图的 web 服务 API 的使用
ts 编写的带有类型定义和注释,更加方便使用
[✅]浏览器
[✅]小程序
[✅]Node
Node 下类型提示有点问题
node 环境需要设置 httpAdapter
小程序 需要添加安全域名 https://api.tianditu.gov.cn
支持的接口
[❌]地名搜索 V2.0 (开发中) 类型定义部分支持
[❌]公交规划 (开发中)
[✅]地理编码接口
[✅]逆地理编码查询
[❌]行政区划服务 (开发中)
[❌]驾车规划 (开发中)
[❌]静态地图 API (开发中)
[❌]地图 API (开发中)
[❌]网页 API (开发中)
用法
new T_MAP(key,options:Options)
参数 | 类型 | 是否必须 | 用处 |
---|---|---|---|
key | string | y | tk |
options | Options | n | 可选配置 |
Options
参数 | 类型 | 是否必须 | 用处 |
---|---|---|---|
httpAdapter | Fun | n ,node 环境必须 | 自定义请求 |
proxy | string | n | 代理地址 |
示例
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,
},
});