Parcourir la source

更改地图工具类名称

HuangKai il y a 6 jours
Parent
commit
7d1e69ce51
1 fichiers modifiés avec 26 ajouts et 3 suppressions
  1. 26 3
      src/view/utils/CoordinateConversion.js

+ 26 - 3
src/view/utils/CoordinateConversion.js

@@ -1,7 +1,7 @@
 import { LatLng, Point } from 'leaflet';
 import MyMap from '../Map';
 
-export default class CoordinateConversion {
+export default class MapUtil {
     /** 
      * 给定地理坐标,转换为相对于origin pixel的相应像素坐标。(在地图上进行位置叠加时比较有用)
      * @param {{lat: number, lng: number}} latlng - 经纬度
@@ -58,7 +58,8 @@ export default class CoordinateConversion {
      */
     static project(latlng, zoom){
         if(!MyMap.map){ console.error("请先初始化地图!"); return; }
-        return MyMap.map.project(latlng, zoom);
+        let p = MyMap.map.project(latlng, zoom);
+        return {x: p.x, y: p.y};
     }
 
     /** 
@@ -69,7 +70,8 @@ export default class CoordinateConversion {
      */
     static unproject(point, zoom){
         if(!MyMap.map){ console.error("请先初始化地图!"); return; }
-        return MyMap.map.unproject(point, zoom);
+        let ll = MyMap.map.unproject(point, zoom);
+        return {lat: ll.lat, lng: ll.lng};
     }
 
     /** 
@@ -107,4 +109,25 @@ export default class CoordinateConversion {
 		// let distance = ll1.distanceTo(ll2) / 1000;
         return MyMap.map.distance(ll1, ll2);
     }
+
+    /** 
+     * 地理坐标移动x,y距离后的地理坐标
+     * @param {{lat: number, lng: number}} latlng - 经纬度
+     * @param {number} distX - x移动距离(单位:米)
+     * @param {number} distY - y移动距离(单位:米)
+     * @returns {{lat: number, lng: number}} - 经纬度
+     */
+    static moveLatLng(latlng, distX, distY) {
+        const R = 6378137; // Radius of the Earth in meters
+    
+        // Convert distances from meters to radians
+        const dLat = distY / R;
+        const dLng = distX / (R * Math.cos(latlng.lat * Math.PI / 180));
+    
+        // Calculate new latitude and longitude
+        const newLat = latlng.lat + (dLat * 180 / Math.PI);
+        const newLng = latlng.lng + (dLng * 180 / Math.PI);
+    
+        return {lat: newLat, lng: newLng};
+    }
 }