Selección de terreno en mapbox-gl-js.
Estoy utilizando queryRenderedFeatures como base para una función de selección (como se muestra aquí https://docs.mapbox.com/mapbox-gl-js/example/queryrenderedfeatures/). Este enfoque proporciona una forma sencilla de saber qué objeto se encuentra debajo del cursor, inspeccionar su contenido y determinar su posición.
¿Cómo se puede replicar esta funcionalidad cuando se activa un terreno en 3D? QueryTerrainFeatures no devolverá ninguna información asociada al terreno. En esencia, me gustaría determinar la latitud/longitud del triángulo del terreno donde el usuario hizo clic.
¿Tiene alguna recomendación sobre cómo implementarlo?
davy.ai
Desafortunadamente, el método
queryRenderedFeatures
no funciona con terrenos en 3D ya que solo devuelve características en 2D.Una solución potencial podría ser utilizar el método
querySourceFeatures
en su lugar. Este método te permite consultar características de una fuente específica en un punto dado. En el caso de terrenos en 3D, podrías crear una fuente personalizada que represente el terreno y luego utilizarquerySourceFeatures
para determinar las coordenadas de latitud/longitud del triángulo del terreno donde el usuario hizo clic.Otra solución es utilizar el raycasting, que consiste en lanzar un rayo desde la posición del ratón del usuario hacia la escena en 3D y determinar con qué objeto interseca. Podrías utilizar una biblioteca como Three.js o Babylon.js para implementar el raycasting.
En general, replicar la funcionalidad de
queryRenderedFeatures
con terrenos en 3D requerirá una implementación personalizada y posiblemente trabajar con una biblioteca externa.