根據你提供的 eb_service_area
表結構,其中有兩個字段與地理坐標相關:latlng
和 limit_latlng
。這兩個字段分別用于存儲服務范圍區域的坐標和限制區域的坐標。下面是對這兩個字段的具體分析以及如何使用它們來定義執行范圍。
字段分析
-
latlng
(服務范圍區域坐標)- 類型:
VARCHAR(1024)
- 描述: 這個字段用來存儲服務范圍的實際區域坐標。通常這些坐標是以某種格式(如 WKT、GeoJSON 或者簡單的經緯度點串)存儲的。
- 示例:
"[[116.397128, 39.916527], [116.397128, 39.916527], ...]"
(假設為 JSON 格式的經緯度點列表)
- 類型:
-
limit_latlng
(服務范圍限制區域坐標)- 類型:
VARCHAR(1024)
- 描述: 這個字段用于存儲服務范圍的限制區域坐標。限制區域可以理解為某些特定區域內的例外情況,例如某些區域雖然在服務范圍內但不提供服務,或者需要特殊處理的區域。
- 示例:
"[[116.407128, 39.926527], [116.407128, 39.926527], ...]"
- 類型:
如何使用這些字段
1. 存儲數據
-
latlng
: 當你需要定義一個服務范圍時,可以通過一組經緯度點來描述這個區域。這些點可以構成一個多邊形或多段線。[{"lat": 39.916527, "lng": 116.397128},{"lat": 39.916527, "lng": 116.407128},{"lat": 39.926527, "lng": 116.407128},{"lat": 39.926527, "lng": 116.397128} ]
將上述 JSON 數據轉換為字符串后存儲到
latlng
字段中。 -
limit_latlng
: 如果存在某些區域需要排除或特別標記,可以用同樣的方式存儲這些限制區域的坐標。[{"lat": 39.920527, "lng": 116.400128},{"lat": 39.920527, "lng": 116.405128},{"lat": 39.925527, "lng": 116.405128},{"lat": 39.925527, "lng": 116.400128} ]
同樣地,將上述 JSON 數據轉換為字符串后存儲到
limit_latlng
字段中。
2. 處理和顯示
- 解析和顯示:
- 在前端應用中,當你從數據庫獲取這些數據時,需要先將
latlng
和limit_latlng
字符串解析回原始的坐標數據格式(如 JSON)。 - 使用地圖庫(如 Leaflet、Google Maps API 等)將這些坐標繪制在地圖上。對于
latlng
字段的數據,你可以將其作為多邊形繪制出來;對于limit_latlng
字段的數據,則可以在地圖上以不同的樣式(如虛線、紅色填充等)顯示這些限制區域。
- 在前端應用中,當你從數據庫獲取這些數據時,需要先將
3. 實際代碼示例
假設你有一個方法來處理這些數據并展示在地圖上:
public void displayServiceAreaOnMap(String latlngStr, String limitLatlngStr) {// 解析 latlng 字符串為坐標點列表List<LatLng> serviceAreaPoints = parseLatLngString(latlngStr);// 解析 limit_latlng 字符串為坐標點列表List<LatLng> limitAreaPoints = parseLatLngString(limitLatlngStr);// 使用地圖API繪制服務范圍map.addPolygon(new PolygonOptions().addAll(serviceAreaPoints).strokeColor(Color.BLUE).fillColor(Color.argb(50, 0, 0, 255)) // 半透明藍色填充);// 繪制限制區域map.addPolygon(new PolygonOptions().addAll(limitAreaPoints).strokeColor(Color.RED).fillColor(Color.argb(50, 255, 0, 0)) // 半透明紅色填充);
}private List<LatLng> parseLatLngString(String latlngStr) {// 假設 latlngStr 是 JSON 格式的字符串 "[[lat1, lng1], [lat2, lng2], ...]"List<LatLng> points = new ArrayList<>();try {JSONArray jsonArray = new JSONArray(latlngStr);for (int i = 0; i < jsonArray.length(); i++) {JSONArray pointArray = jsonArray.getJSONArray(i);double lat = pointArray.getDouble(0);double lng = pointArray.getDouble(1);points.add(new LatLng(lat, lng));}} catch (JSONException e) {e.printStackTrace();}return points;
}
總結
latlng
和limit_latlng
字段是分別用于存儲服務范圍及其限制區域的坐標信息。- 這些坐標通常以某種格式(如 JSON)存儲,并且在使用時需要解析成實際的坐標點列表。
- 通過地圖庫,可以將這些坐標點繪制在地圖上,以便直觀地展示服務范圍及任何限制區域。
這種設計允許靈活地定義復雜的地理區域,適用于物流項目中的執行范圍管理。如果你有更具體的需求或問題,歡迎進一步討論!