Vai al contenuto

ragnetto

Dato un layer vettoriale, l'espressione permette di simulare un ragnetto che si sposta nella mappa a partire dal centro della stessa mappa e collegandosi ai primi 8 punti più vicini. (per far seguire il mouse usare la variabile @canvas_cursor_point al posto di @map_extent_center)

L'espressione va utilizzata in un layer di stile come generatore di geometrie.

with_variable(
  'center',
  transform(@map_extent_center, @map_crs, @layer_crs),
  if(
    array_contains(
      array_slice(
        array_agg(
          @id,
          order_by := distance(@geometry, @center)
        ), 0, 7
      ),
      @id
    ),
    make_line(@geometry, @center),
    NULL
  )
)

Ragnetto insegue puntatore mouse

L'espressione è la seguente:

with_variable(
  'center',
  transform(@canvas_cursor_point, @map_crs, @layer_crs),
  if(
    array_contains(
      array_slice(
        array_agg(
          @id,
          order_by := distance(@geometry, @center)
        ), 0, 7
      ),
      @id
    ),
    make_line(@geometry, @center),
    NULL
  )
)

Etichette

Per visualizzare le sole etichette degli otto elementi più vicini: attivare l'etichettatura tramite regola e utilizzare la seguente espressione nel filtro:

with_variable(
  'center',
  transform(@canvas_cursor_point, @map_crs, @layer_crs),
  if(
    array_contains(
      array_slice(
        array_agg(
          @id,
          order_by := distance(@geometry, @center)
        ), 0, 7
      ),
      @id
    ),
    true,
    NULL
  )
) is true

Per visualizzare come etichette le relative distanze usare la seguente espressione:

with_variable(
  'center',
  transform(@canvas_cursor_point, @map_crs, @layer_crs),
  if(
    array_contains(
      array_slice(
        array_agg(
          @id,
          order_by := distance(@geometry, @center)
        ), 0, 7
      ),
      @id
    ),
    round(length(make_line(@geometry, @center)),2),
    NULL
  )
) ||' m'

Funzioni e variabili utilizzate: