1.1.2 • Published 5 months ago
@medmotion-open/test-delete v1.1.2
简化 天地图的 web 服务 API 的使用
esModule
✅浏览器
✅小程序
小程序 需要添加安全域名 https://api.tianditu.gov.cn
Node 版见 https://www.npmjs.com/package/@medmotion-open/tdt-node
支持的接口
❌地名搜索 V2.0 (开发中) 类型定义部分支持
❌公交规划 (开发中)
✅地理编码接口
❌逆地理编码查询 (开发中)
❌行政区划服务 (开发中)
❌驾车规划 (开发中)
❌静态地图 API (开发中)
❌地图 API (开发中)
❌网页 API (开发中)
用法
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);
}
使用代理
✅ 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,
},
});
interface GenCodeReq {
location: {
/**
* 检索时的keyWord
*/
keyWord: string;
/**
* 坐标点显示经度
*/
lon: string;
/**
* 坐标点显示纬度
*/
lat: string;
/**
* 类别名称
*/
level?: string;
/**
* 附近相似点 开启周边查询必需返回。
*/
typeRound?: string;
};
}
map.baseRequest<GenCodeReq>({
url: 'geocoder',
params: {
ds,
},
});