服务
SDK 服务
Vue 组合式函数封装的官方 service 类
@tianditu/vue 将官方文档 service/ 目录下的服务类封装为组合式函数。它们要在 <TdtMap> 内部的 setup 里调用(SDK 就绪后才会创建实例),回调统一改为 Promise。
地名搜索 useLocalSearch
<script setup>
import { useLocalSearch } from "@tianditu/vue";
const { search } = useLocalSearch({ pageCapacity: 10 });
const doSearch = async (keyword) => {
const result = await search(keyword);
console.log(result);
};
</script>
| 返回 | 说明 |
|---|---|
searcher | LocalSearch 实例的响应式引用 |
results / status | 搜索结果与状态(idle/loading/done) |
search(keyword, type?) | 关键词检索,type 为官方检索类型,不传时为普通搜索 |
searchInBounds(keyword, bounds) | 范围搜索 |
searchNearby(keyword, center, radius) | 周边搜索 |
gotoPage(page) | 结果分页 |
clearResults() | 清空结果 |
反地址解析 useGeocoder
const { getLocation } = useGeocoder();
const result = await getLocation([116.404, 39.915]);
解析成功返回 GeocoderResult,失败返回 null。
浏览器定位 useGeolocation
const { getCurrentPosition } = useGeolocation();
const result = await getCurrentPosition({ timeout: 5000 });
定位失败返回 null;配置项为官方 GeolocationOptions(enableHighAccuracy/maximumAge/timeout)。
驾车规划 useDrivingRoute / 公交规划 useTransitRoute
const { search } = useDrivingRoute(T.DrivingRoutePolicy.LEAST_TIME);
await search(startLngLat, endLngLat);
构造时传入策略,返回 { router, results, search }(search(start, end),公交规划 useTransitRoute(policy) 同构)。
公交线路查询 useBusLineSearch
返回 { searcher, busList, busLine, getBusList, getBusLine }——先按线路名取线路列表,再取具体线路详情。
数据来源 useDataSources
const { search } = useDataSources();
const result = await search({ level: 12, bound: "…" });
查询当前地图数据的来源,结果为 { ds: "数据来源" };配置项为官方 DataSourcesOptions(level/bound/layers/projection)。
行政区查询 useAdministrativeDivision
const { search } = useAdministrativeDivision();
const result = await search({ searchWord: "北京", searchType: 1 });
searchType:0 根据 code 查询、1 根据名称查询;其余配置项见官方 AdministrativeDivisionOptions(needSubInfo/needAll/needPolygon/needPre)。结果经 getStatus() 判断:100 正常、101 没有查到结果。
城市信息 useLocalCity
const { location } = useLocalCity();
const info = await location();
// info.lnglat 城市中心点、info.level 最佳级别、info.cityName 城市名称
通用说明
- 全部 composable 同时 expose 了官方实例(如
geocoder、searcher),可命令式调用实例上的其余官方方法 - 这些封装的是
window.T上的 SDK 服务类;纯 HTTP REST 场景请用 @tianditu/services