UNPKG

@web-map-service/map2d-app

Version:

基于openlayer的2D地图应用

60 lines (51 loc) 1.23 kB
import { createMeasureInteractive } from '@web-map-service/map2d' import { App, Plugin } from '../types' type MeasureType = 'distance' | 'area' | 'angle' function makeTool(app: App) { const { interactiveManager, emitter } = app.map function emit(data: string) { app.emitter.emit('measure', data) } const sMeasure = createMeasureInteractive(interactiveManager) const tool = { enabled: false, enable() { if (tool.enabled) return tool.enabled = true emitter.on('measure', emit) sMeasure.enable() }, use(type: MeasureType) { sMeasure.use(type) }, close() { if (!tool.enabled) return tool.enabled = false emitter.remove('measure', emit) sMeasure.close() } } return tool } export function createPlugin() { let app: App const plugin: Plugin = { type: 'measure', install(_app: App) { app = _app app.tools.measure = makeTool(app) return app } } return plugin } declare module './tool' { interface Tools { measure: ReturnType<typeof makeTool> } } declare module '../types' { interface AppEmitterEvent { measure: any } }