vue3+mapboxgl mouse pantalla flotante cgcs2000

1. Demanda

El mouse flota en el mapa para mostrar la latitud y la longitud del mapa, cgcs2000 xy también muestra el número de banda

2. Darse cuenta del efecto

Mostrar longitud, latitud, valor x, valor y muestra el número de banda y el valor y

3. Ideas

3.1, método mapbox para obtener latitud y longitud

Después de inicializar el mapa, hay un método mousemove en el método .on

mapboxUtil._mapInstance.on('mousemove', mapboxUtil.mouseMove);
mouseMove(e) {
        console.log(e,"eeeeeeee")
        let obj = e.lngLat
        let WebMercator = wgs84ToCgcs2000(e.lngLat)
        obj["cgcsY"] = WebMercator[0]
        obj["cgcsX"] = WebMercator[1]
        obj["signed"] = WebMercator[2]
        store.commit("setMouseMove", obj);
    },

Se puede ver que hay longitud y latitud en los parámetros del método, podemos obtener su cgcs2000 xy a través de la longitud y la latitud 

 3.2 Convertir entre latitud y longitud y cgcs2000

Yo uso proj4 aquí, agrego dependencias

npm install proj4 --s

citando proj4 

import proj4 from "proj4";

  Parámetros de wgs84 = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"

Parámetros de cgcs2000 = "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"

wgs84ToCgcs2000(lngLat) {
    let wgs84 = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs  "
    let cgcs2000 =
        "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"
    let obj = proj4(wgs84, cgcs2000, [lngLat.lng, lngLat.lat]);
    return obj;
}

 3,3, calcular el número de banda

 

De esto se puede ver que la zona de tres grados no está en el meridiano central, por lo que debe restarse 1,5 grados. 

Valoración del número de cinturón El número de cinturón inferior a 23 debe ser el cinturón de sexto grado dentro del territorio chino, y el número de cinturón mayor o igual a 24 debe ser el cinturón de tercer grado.

Si el cálculo no es mucho, dame más consejos y lo corregiré a tiempo.

Fórmula de cálculo del número de cinturón de 3 grados: Math.floor ((longitud - 1,5) / 3) + 1

let dh = Math.floor((lngLat.lng - 1.5) / 3) + 1

Fórmula de cálculo para el número de cinturón de 6 grados: Math.floor (longitud/3) + 1

let dh = Math.floor(lngLat.lng / 3) + 1

Supongo que te gusta

Origin blog.csdn.net/xm_w_xm/article/details/131658416
Recomendado
Clasificación