Source: https://maps.vietmap.vn/docs/vi/map-api/geofencing/ # Geofencing API — Hàng rào địa lý ảo [![geofencing]][geofencing] [geofencing]: https://maps.vietmap.vn/docs/assets/geofencing-jpg.webp **Geofencing** là vẽ một hàng rào ảo quanh một địa điểm thật rồi phản ứng khi thiết bị hoặc xe đi qua ranh giới đó. Geofencing API của VIETMAP cho phép bạn khai các hàng rào này ở bất kỳ đâu tại Việt Nam và đối chiếu vị trí với chúng, nhờ vậy việc vào hoặc ra khỏi một vùng có thể kích hoạt thông báo, cảnh báo, hoặc một bước trong quy trình của bạn. ## Dùng vào việc gì | Bài toán | Hàng rào ảo làm gì | | --- | --- | | **Xác nhận giao hàng** | Kiểm chứng xe đã thật sự tới địa chỉ khách trước khi tài xế bấm hoàn tất đơn. | | **Giám sát tuân thủ đội xe** | Cảnh báo khi xe tải ra khỏi vùng được phép chạy hoặc đi vào khu vực bị cấm. | | **Tự động ghi nhận chuyến** | Tự mở và đóng sổ chuyến khi xe rời kho và quay về, tài xế không phải thao tác gì. | | **Chấm công tại chỗ** | Ghi nhận nhân viên tới và rời công trường hoặc chi nhánh. | | **Tiếp thị theo vị trí** | Gửi thông báo khi khách đang ở gần một cửa hàng của bạn. | | **Bảo vệ tài sản** | Báo động ngay khi thiết bị bị đưa ra khỏi bãi của nó. | ## Geofence khác isochrone thế nào **Geofence** là hàng rào do *bạn* tự vẽ rồi theo dõi ai ra vào. Còn **[isochrone](https://maps.vietmap.vn/docs/vi/map-api/isochrone/)** là vùng do VIETMAP *tính* giúp bạn — vùng đi tới được trong một khoảng thời gian cho trước. Hai thứ này ghép với nhau rất tự nhiên: tính isochrone để biết vùng phục vụ hợp lý trông thế nào, rồi khai chính vùng đó thành geofence và theo dõi. URL --- ```swift https://maps.vietmap.vn/api/geofencing?apikey={your-apiKey} ``` Method --- **POST** Tham số --- |Tham số|Kiểu|Bắt buộc|Mặc định|Mô tả| |--- |--- |--- |--- |--- | |apikey|string|có|không|API key VIETMAP cấp cho tài khoản của bạn. Đăng ký tại [đây](https://maps.vietmap.vn/console-v2/register)| Ví dụ --- ```swift URL: https://maps.vietmap.vn/api/geofencing?apikey=”YOUR APIKEY” ``` ```json Body: { "geometryCenters": [ { "id": "1", "long": 105.7487405, "lat": 9.8644254 }, { "id": "2", "long": 105.7491342, "lat": 9.8642686 }, { "id": "3", "long": 105.7489267, "lat": 9.8645398 } ], "radius": 15, "long": 105.7488398, "lat": 9.8643837 } ``` ### Mô tả tham số | Trường | Kiểu | Mô tả | |------------------|---------|------------------------------------------------------------------------| | geometryCenters | array | Danh sách tâm vùng cần đối chiếu, mỗi phần tử một vùng. | | geometryCenters.id | string | Mã định danh của tâm vùng. | | geometryCenters.long | number | Kinh độ của tâm vùng. | | geometryCenters.lat | number | Vĩ độ của tâm vùng. | | radius | number | Bán kính (mét), áp cho mọi tâm trong `geometryCenters`. Vị trí cách tâm không quá `radius` thì `inside` = `true`. | | long | number | Kinh độ của vị trí cần kiểm tra (xe, thiết bị). | | lat | number | Vĩ độ của vị trí cần kiểm tra (xe, thiết bị). | Phản hồi --- ```json { "code": null, "message": null, "data": [ { "id": "1", "inside": true }, { "id": "2", "inside": false }, { "id": "3", "inside": false } ] } ``` ### Mô tả phản hồi | Trường | Kiểu | Mô tả | |------------|---------|----------------------------------------------------------------------| | code | null | Mã lỗi. `null` khi thành công. | | message | null | Thông báo lỗi. `null` khi thành công. | | data | array | Một phần tử cho mỗi tâm trong `geometryCenters`. | | data.id | string | `id` bạn đã gửi cho tâm vùng đó. | | data.inside| boolean | `true` nếu vị trí cách tâm này không quá `radius`, ngược lại `false`. |