Bỏ qua, đến nội dung

@digiforce-nc/plugin-map

Plugin hiển thị dữ liệu địa lý trên bản đồ (Map View) và cung cấp các field type địa lý (point, polygon, lineString, circle) - tích hợp Google Maps với cấu hình API key lưu trong database.

Plugin này làm gì?

Map plugin mở rộng hệ thống theo hai hướng: (1) thêm field types cho dữ liệu địa lý - cho phép lưu tọa độ, vùng, đường, hình tròn vào bất kỳ collection nào; (2) cung cấp Map block hiển thị records trên bản đồ Google Maps. Cấu hình API key được lưu trong database, quản lý qua resource riêng.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Geo field typesThêm point, polygon, lineString, circle vào hệ thống field
2Map blockHiển thị records trên bản đồ Google Maps
3Cấu hình providerLưu API key Google Maps trong database, quản lý qua API

Kiến trúc

Tổng quan

Plugin có server (field types, value parsers, map configuration resource) và client (map block, field widgets, Google Maps integration):

TầngVai tròThành phần
Client UIRender bản đồ, field widgetsMapBlockWidget, field widgets
Server APICấu hình map, field typesmap-configuration, value parsers
DatabaseLưu API key, geo datamapConfiguration, geo fields
Google MapsMap rendering engine@googlemaps/js-api-loader

API endpoints

EndpointMethodMô tả
map-configuration:getGETLấy cấu hình map provider (API key, type)
map-configuration:setPOSTCập nhật cấu hình map provider

Admin cấu hình API key qua trang Settings > Map Configuration. Client gọi map-configuration:get để lấy key trước khi load Google Maps API.

Database

Bảng mapConfiguration

CộtKiểuMô tả
typestringLoại map provider (google)
accessKeystringAPI key của map provider
securityJsCodestringMã bảo mật JavaScript (nếu cần)

Field types địa lý

Plugin đăng ký 4 field type mới vào hệ thống:

Field TypeGiá trị lưu trữVí dụ
point[lng, lat][106.6297, 10.8231] (TP.HCM)
polygon[[lng, lat], ...]Mảng tọa độ tạo thành vùng khép kín
lineString[[lng, lat], ...]Mảng tọa độ tạo thành đường
circle{ center: [lng, lat], radius: number }Tâm + bán kính (mét)

Mỗi field type có value parser tương ứng trên server để chuyển đổi dữ liệu geo giữa client format và storage format.

Luồng hiển thị Map block

Tính năng

Tính năngMô tả
Point fieldChọn vị trí trên bản đồ, lưu tọa độ
Polygon fieldVẽ vùng đa giác trên bản đồ
LineString fieldVẽ đường trên bản đồ
Circle fieldVẽ hình tròn (tâm + bán kính)
Map blockHiển thị records trên bản đồ
Marker clusteringGom nhóm markers khi zoom xa
Popup detailClick marker hiển thị thông tin record
Provider configQuản lý API key trong Settings
Field widgetsInput widget với map picker cho từng geo type

Thành phần client

Thành phầnMô tả
MapBlockWidgetWidget chính đăng ký Map block
GoogleMapsComponent bọc Google Maps API
MapBlockInitializerĐăng ký vào menu "Add block"
MapDesignerDesigner: cấu hình geo field, zoom, center
GeoFieldWidgetsInput/display widgets cho point, polygon, lineString, circle
MapConfigurationPageTrang Settings > Map Configuration

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/databaseDatabase ORM (peer)
@googlemaps/js-api-loaderTải Google Maps JavaScript API

Mục lục chi tiết