Przeglądaj źródła

修改注释和坐标转换方法

HuangKai 1 tydzień temu
rodzic
commit
a22f58e4ef
1 zmienionych plików z 38 dodań i 14 usunięć
  1. 38 14
      src/view/utils/CoordinateConversion.js

+ 38 - 14
src/view/utils/CoordinateConversion.js

@@ -3,11 +3,11 @@ import MyMap from '../Map';
 
 export default class CoordinateConversion {
     /** 
-     * 将地理坐标投影到给定缩放的像素坐标中。
-     * @param {[lat: number, lng: number]} latlng - 经纬度
-     * @returns {[x:number, y:number]} - 像素点坐标
+     * 给定地理坐标,转换为相对于origin pixel的相应像素坐标。(在地图上进行位置叠加时比较有用)
+     * @param {{lat: number, lng: number}} latlng - 经纬度
+     * @returns {{x:number, y:number}} - 像素点坐标
      */
-    static latLngToPoint(latlng){
+    static latLngToLayerPoint(latlng){
         if(!MyMap.map){ console.error("请先初始化地图!"); }
         let ll = new LatLng(latlng.lat, latlng.lng);
         let p = MyMap.map.latLngToLayerPoint(ll);
@@ -15,22 +15,46 @@ export default class CoordinateConversion {
     }
 
     /** 
-     * latLngToPoint的倒数。 将给定缩放上的像素坐标投影到地理坐标中
-     * @param {[x:number, y:number]} point - 像素点坐标
-     * @returns {[lat: number, lng: number]} - 经纬度
+     * 给定相对于origin pixel的相应像素坐标,转换为相应的地理坐标(对于当前缩放级别)
+     * @param {{x:number, y:number}} point - 像素点坐标
+     * @returns {{lat: number, lng: number}} - 经纬度
      */
-    static pointToLatLng(point){
+    static layerPointToLatLng(point){
         if(!MyMap.map){ console.error("请先初始化地图!"); }
         let p = new Point(point.x, point.y);
         let ll = MyMap.map.layerPointToLatLng(p);
         return {lat: ll.lat, lng: ll.lng};
     }
 
+    /** 
+     * 给给定地理坐标,返回相对于地图container容器的相应像素坐标。
+     * @param {{lat: number, lng: number}} latlng - 经纬度
+     * @returns {{x:number, y:number}} - 像素点坐标
+     */
+    static latLngToContainerPoint(latlng){
+        if(!MyMap.map){ console.error("请先初始化地图!"); }
+        let ll = new LatLng(latlng.lat, latlng.lng);
+        let p = MyMap.map.latLngToContainerPoint(ll);
+        return {x: p.x, y: p.y};
+    }
+
+    /** 
+     * 给定相对于地图container容器的像素坐标,返回对应的地理坐标(对于当前缩放级别)。
+     * @param {{x:number, y:number}} point - 像素点坐标
+     * @returns {{lat: number, lng: number}} - 经纬度
+     */
+    static containerPointToLatLng(point){
+        if(!MyMap.map){ console.error("请先初始化地图!"); }
+        let p = new Point(point.x, point.y);
+        let ll = MyMap.map.containerPointToLatLng(p);
+        return {lat: ll.lat, lng: ll.lng};
+    }
+
     /** 
      * 将地理坐标投影为接受单位的坐标 此 CRS(例如 EPSG:3857 的仪表,用于将其传递给 WMS 服务)。
-     * @param {[lat: number, lng: number]} latlng - 经纬度
+     * @param {{lat: number, lng: number}} latlng - 经纬度
      * @param {number} zoom - 缩放级别
-     * @returns {[x:number, y:number]} - 像素点坐标
+     * @returns {{x:number, y:number}} - 像素点坐标
      */
     static project(latlng, zoom){
         if(!MyMap.map){ console.error("请先初始化地图!"); }
@@ -39,9 +63,9 @@ export default class CoordinateConversion {
 
     /** 
      * 给定一个投影坐标返回相应的 LatLng。。
-     * @param {[x:number, y:number]} latlng - 像素点坐标
+     * @param {{x:number, y:number}} point - 像素点坐标
      * @param {number} zoom - 缩放级别
-     * @returns {[lat: number, lng: number]} - 经纬度
+     * @returns {{lat: number, lng: number}} - 经纬度
      */
     static unproject(point, zoom){
         if(!MyMap.map){ console.error("请先初始化地图!"); }
@@ -72,8 +96,8 @@ export default class CoordinateConversion {
 
     /** 
      * 返回两个地理坐标之间的距离
-     * @param {[lat: number, lng: number]} latlng1 - 经纬度1
-     * @param {[lat: number, lng: number]} latlng2 - 经纬度2
+     * @param {{lat: number, lng: number}} latlng1 - 经纬度1
+     * @param {{lat: number, lng: number}} latlng2 - 经纬度2
      * @returns {number} - 距离(单位:米)
      */
     static distance(latlng1, latlng2){