|
@@ -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){
|