Preview Updated 2026-05-10

Map

Lightweight vector map container with marker, polygon overlay, route, zoom, and interaction events.

Basic usage

Map is a zero-dependency vector map canvas. Coordinates use a normalized 0–100 space — handy for data-center floor plans, campus topology, regional monitoring, or network node diagrams in admin systems. Markers, overlays, and routes are all interactive: clicking an overlay fires overlay-click, clicking a marker fires marker-click, and clicking empty space fires map-click.

Edge A99%Core12msEdge B3 alertsBackupidle
edge-a点击地图、标记或区域后,这里会显示事件 payload。
Demo source
src/App.vue vue
<CfMap
:markers="markers"
:overlays="overlays"
:routes="routes"
@marker-click="onMarkerClick"
@overlay-click="onOverlayClick"
@map-click="onMapClick"
/>
src/App.tsx tsx
<CfMap
markers={markers}
overlays={overlays}
routes={routes}
onMarkerClick={onMarkerClick}
onOverlayClick={onOverlayClick}
onMapClick={onMapClick}
/>

API

PropTypeDefaultDescription
markersMapMarker[][]Marker points; fields are id / label / x / y / tone? / value? / disabled?
overlaysMapOverlay[][]Polygon overlays. With interactive: true they respond to click and keyboard activation
routesMapRoute[][]Polyline routes; supports tone and dashed
heightnumber | string360Map height
center{ x: number; y: number }{ x: 50, y: 50 }Viewport center
zoomnumber1Initial zoom level
minZoom / maxZoomnumber0.7 / 2.4Zoom bounds
showGridbooleantrueShow the background grid
showLabelsbooleantrueShow marker labels
controlsbooleantrueShow zoom / reset controls
activeIdstringHighlight a marker or overlay

Events

Vue eventReact callbackpayloadDescription
marker-clickonMarkerClick{ marker, nativeEvent }Click or keyboard activation on a marker
marker-enter / marker-leaveonMarkerEnter / onMarkerLeave{ marker, nativeEvent }Marker hover state
overlay-clickonOverlayClick{ overlay, nativeEvent }Click or keyboard activation on an interactive overlay
map-clickonMapClick{ point, nativeEvent }Click on empty space; payload is normalized coordinates
viewport-changeonViewportChange{ center, zoom }Fired after using zoom / reset controls

Design notes

This release intentionally avoids binding to any specific mapping service — the focus is on getting the UI-library essentials right (overlays, events, state, accessibility). When integrating Leaflet or Mapbox later, the same markers / overlays / events surface can stay; only the rendering layer needs to swap to real tiles or a WebGL map.

反馈与讨论

Map · Discussion

0
0 / 600
一键发送
正在加载评论...