Appearance
Events (Sự kiện)
Sử dụng phương thức sdk.on(eventName, callback) để lắng nghe các sự kiện phát ra từ bản đồ. Đây là cơ chế chính để ứng dụng của bạn phản hồi lại hành động của người dùng trên bản đồ.
1. Sự kiện Vòng đời
APP_READY
Phát ra khi ứng dụng bản đồ đã tải xong, dữ liệu site đã được khởi tạo và sẵn sàng nhận lệnh.
javascript
sdk.on("APP_READY", () => {
console.log("Bản đồ đã sẵn sàng!");
sdk.setView({ lng: 105.8, lat: 21.0, zoom: 17 });
});2. Sự kiện Tương tác Bản đồ
poiClicked
Phát ra khi người dùng nhấp chuột vào một POI (điểm quan tâm) trên bản đồ.
javascript
sdk.on("poiClicked", (data) => {
console.log("POI được chọn:", data.name);
console.log("Chi tiết POI:", data);
});- Payload: Đối tượng chứa thông tin POI (name, category, address, geo, ...).
floorChanged
Phát ra khi người dùng thay đổi tầng (floor) thông qua bộ lọc tầng của bản đồ.
javascript
sdk.on("floorChanged", (payload) => {
console.log("Tầng hiện tại:", payload.floor);
});- Payload:
{ floor: number | null }.
viewChanged
Phát ra khi bản đồ thay đổi vị trí hoặc mức zoom (kết thúc hành động pan/zoom).
javascript
sdk.on("viewChanged", (payload) => {
console.log("Tọa độ mới:", payload.center);
console.log("Zoom mới:", payload.zoom);
});- Payload:
{ center: { lng, lat }, zoom: number }.
3. Cách hủy lắng nghe (Unsubscribe)
Để tránh rò rỉ bộ nhớ (memory leak), bạn nên hủy đăng ký sự kiện khi không còn cần thiết hoặc khi component bị hủy (unmount).
javascript
const handler = (data) => console.log(data);
// Đăng ký
sdk.on("poiClicked", handler);
// Hủy đăng ký
sdk.off("poiClicked", handler);Bảng tổng hợp sự kiện
| Sự kiện | Payload | Mô tả |
|---|---|---|
APP_READY | N/A | Bản đồ đã tải xong hoàn toàn. |
poiClicked | Object | Người dùng click vào một POI. |
floorChanged | { floor } | Tầng hiện tại đã thay đổi. |
viewChanged | { center, zoom } | Khung nhìn bản đồ thay đổi. |
Ghi chú cho lập trình viên
- Xử lý bất đồng bộ: Các sự kiện này được phát ra không đồng bộ qua
postMessage. Hãy đảm bảo logic xử lý của bạn không bị chặn bởi các tác vụ nặng trên luồng chính. - Phạm vi: Chỉ những sự kiện được SDK định nghĩa mới có thể lắng nghe. Nếu bạn cần thêm sự kiện mới, hãy liên hệ với đội ngũ phát triển VGM Map SDK để được hỗ trợ cập nhật Bridge.
