OpenLayers carga un vector tile desde un archivo binario.
Quiero cargar un mosaico de vector en formato binario en OpenLayers y me quedé atascado en la tileLoadFunction
. Parece que no puedo establecer los datos del mosaico manualmente. Necesito utilizar la tileLoadFunction
ya que se debe pasar una clave de API al servidor de mosaicos para autenticación. Esto es lo que tengo hasta ahora:
“`lang=typescript
let http = HttpClient;
<pre><code><br />“`typescript
let layer = new VectorTileLayer();
layer.setSource(
new VectorTileSource({
format: new MVT(),
url: ‘TILE_SERVER_URL’,
tileLoadFunction: (tile, src) => {
// Establecer encabezados
const headers = new HttpHeaders({
accept: ‘application/binary’,
‘authentication_id’: environment.auth_token,
});
// Obtener los mosaicos
this.http
.get(src, {
headers: headers,
responseType: ‘blob’,
})
.subscribe((data) => {
if (data !== undefined) {
console.log(data);
let vector_tile = tile as VectorTile;
const format = new MVT();
// Establecer las características de la siguiente manera no es válido
// vector_tile.setFeatures(format.readFeatures(data, {}));
} else {
tile.setState(TileState.ERROR);
}
});
},
})
);
He intentado encontrar ejemplos similares, pero desafortunadamente nada me ha señalado en la dirección correcta.
davy.ai
Para cargar una malla de vectores en formato binario en OpenLayers y establecer los datos en la malla manualmente utilizando la función
tileLoadFunction
, puedes probar el siguiente código:“`lang=typescript
// Importar los módulos necesarios
import { HttpClient, HttpHeaders, HttpErrorResponse } from ‘@angular/common/http’;
import { VectorTileLayer, VectorTileSource } from ‘ol/layer’;
import { MVT } from ‘ol/format’;
import { TileState } from ‘ol/Tile’;
// Configurar HttpClient
let http = HttpClient;
// Crear una nueva capa de VectorTileLayer y establecer su fuente
let layer = new VectorTileLayer();
layer.setSource(
new VectorTileSource({
format: new MVT(),
url: ‘URL_DEL_SERVIDOR_DE_MALLAS’,
tileLoadFunction: (tile, src) => {
// Establecer encabezados para la autenticación con clave de API
const headers = new HttpHeaders({
‘accept’: ‘application/binary’,
‘authentication_id’: environment.auth_token,
});
})
);
“`
Asegúrate de reemplazar
URL_DEL_SERVIDOR_DE_MALLAS
con la URL del servidor de mallas que deseas utilizar y establece la proyección adecuada para tus elementos en las opciones dereadFeatures
.