tdt-overlay-factory
Version:
天地图覆盖物工厂,通过vue组件直接生成天地图覆盖物类,支持vue2/vue3
97 lines (72 loc) • 2.53 kB
Markdown
天地图覆盖物工厂,通过 vue 组件能直接生成天地图覆盖物类,支持 vue2/vue3。
这个工具包里没有直接引入天地图的 sdk,但是工具包里又直接使用了 T 这个变量,因此使用前需要用户先引入天地图 sdk,并将将 T 注册为 window 上的全局变量。
天地图 sdk: http://api.tianditu.gov.cn/api?v=4.0&tk=您的密钥
```cmd
npm install tdt-overlay-factory
yarn add tdt-overlay-factory
pnpm install tdt-overlay-factory
```
```js
import tdtOverlayFactory from "tdt-overlay-factory";
import "tdt-overlay-factory/dist/style.css";
Vue.use(tdtOverlayFactory);
```
```js
import tdtOverlayFactory from "tdt-overlay-factory";
import "tdt-overlay-factory/dist/style.css";
app.use(tdtOverlayFactory, Vue);
```
vue2 使用 this.$调用,vue3 使用 inject 引入
```js
// vue2
this.$pointOverlayFactory;
this.$blockOverlayFactory;
// vue3
inject: ["pointOverlayFactory", "blockOverlayFactory"];
this.pointOverlayFactory;
this.blockOverlayFactory;
```
```js
// 点覆盖物示例
const pointOverlay = this.$pointOverlayFactory(moduleName);
const point = new T.LngLat(lng, lat);
const marker = new pointOverlay(point, {
// 对应覆盖物组件的props,只有对象类是响应式的
pointData,
map: this.map,
});
this.map.addOverLay(marker);
```
```js
// 块覆盖物示例
const blockOverlay = this.$blockOverlayFactory(moduleName);
var block = new T.LngLatBounds(
new T.LngLat(106.45346, 29.490206),
new T.LngLat(106.52346, 29.550206)
);
var marker = new blockOverlay(block, {
map: this.map,
});
this.map.addOverLay(marker);
```
请参考 https://39zzw.csb.app/#/tdtDemo
<iframe src="https://codesandbox.io/embed/39zzw?view=editor+%2B+preview&module=%2Fsrc%2Fviews%2FtdtDemo.vue"
style="width:100%; height: 500px; border:0; border-radius: 4px; overflow:hidden;"
title="Vue Template"
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
></iframe>
v1.0.2 修改自定义覆盖物基类,修正setLngLat、getLngLat方法名,移除zoomend监听
v1.0.1 更新路径