Saltar al contenido principal

Referencia de Tile

product="tile" muestra un mapa base de Kaleidr seleccionado mediante un identificador de estilo. El SDK intercambia tu clave publicable por una sesión de Tile y sustituye el contenido del destino de montaje por un iframe que carga https://map-embed.kaleidr.com/?style=<style>. El mapa se dibuja dentro de ese iframe.

La sesión permite que Kaleidr compruebe la clave, su permiso y el origen de tu página, contabilice una carga de mapa y entregue el mapa base predeterminado de tu organización. La sesión no se pasa al iframe. La URL del iframe contiene el identificador de estilo y la cámara indicada (camera, pitch, bearing): no incluye ninguna clave publicable ni token de sesión, y el mapa del iframe no realiza llamadas con ellos.

ClaveUna clave publicable (kld_pk_live_…). Obligatoria.
Permisomaps. Las claves nuevas lo incluyen por defecto.
PlanTodos los planes, incluido Free.
Se muestra enUn iframe de https://map-embed.kaleidr.com.
ContabilizaciónUna carga de mapa por sesión de Tile.
CSPscript-src https://cdn.kaleidr.com, connect-src https://api.kaleidr.com, frame-src https://map-embed.kaleidr.com.

Para ver una guía paso a paso, consulta Usar un mapa base de Kaleidr.

Montaje​

Con el elemento:

<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
<kaleidr-map product="tile"
publishable-key="kld_pk_live_…"
style-id="kaleidr-morning"
center="-0.1276,51.5072" zoom="11"
style="display:block; height:480px"></kaleidr-map>

Desde JavaScript:

const handle = Kaleidr.mount('#basemap', {
product: 'tile',
publishableKey: 'kld_pk_live_…',
styleId: 'kaleidr-morning',
center: [-0.1276, 51.5072],
zoom: 11,
});

Opciones​

Opción de montajeAtributoTipoPredeterminadoObligatorioDescripción
productproduct'tile'ningunosíSelecciona Tile.
publishableKeypublishable-keycadenaningunosíClave kld_pk_… con el permiso maps. Las claves de servidor (kld_sk_…) se rechazan en el navegador antes de enviar cualquier solicitud.
styleIdstyle-idcadenamapa base predeterminado de la organización, si existerecomendadoIdentificador de estilo de la tabla siguiente o URL completa https:// de un documento de estilo. Debe coincidir con ^[A-Za-z0-9._:/~-]{1,200}$.
centercenter[longitude, latitude]; el atributo usa "longitude,latitude"vista predeterminada del estilonoCentro inicial.
zoomzoomnúmerovista predeterminada del estilonoZoom inicial. Se ignora en el montaje si no se proporciona también center.
pitchpitchnúmero, gradosvista predeterminada del estilonoInclinación inicial.
bearingbearingnúmero, gradosvista predeterminada del estilonoRotación inicial.
apiBaseapi-baseURLhttps://api.kaleidr.com/inference-apinoDestino del intercambio de sesión. Debe incluir la ruta /inference-api. No hace falta en producción.
viewerBaseviewer-baseURLhttps://map-embed.kaleidr.comnoOrigen desde el que se carga el iframe; solo se usa el origen. Es el servidor de la página del mapa, no de sus datos.
basebaseURLhttps://cdn.kaleidr.comnoOrigen desde el que el SDK carga tile.js. Solo se usa el origen y se aceptan únicamente los enumerados en La sustitución de base.
enabledflagbooleanoningunonoControl por montaje de la puerta de activación.

shareId, theme, map, mapTarget, contained y tileBase no tienen efecto sobre un montaje de Tile.

Identificadores de estilo​

style-idAspecto
kaleidr-morningLuminoso: fondo blanco, agua cian y carreteras blancas.
kaleidr-afternoonFondo de tono medio, vegetación verde y carreteras grises.
kaleidr-eveningHora dorada: tonos cálidos de arena y oliva.
kaleidr-nightAzul marino y carbón oscuros, con autopistas ámbar.
kaleidr-plainLienzo blanco con límites y nombres de lugares. Los edificios 3D aparecen desde el zoom 15.
kaleidr-editorialPaleta de tarde sin etiquetas, para mapas pequeños o decorativos.

Reglas:

  • Los identificadores deben coincidir exactamente y distinguen mayúsculas y minúsculas. No existen alias cortos.
  • Si se omite styleId, se utiliza el mapa base predeterminado configurado por la organización y recibido en la sesión. Si no existe, el iframe muestra «Couldn't find a map id in the URL.». Proporciona styleId para no depender de la configuración de la cuenta.
  • Un styleId explícito siempre prevalece sobre el predeterminado de la organización.
  • Un identificador inexistente produce un iframe vacío y un mensaje kaleidr-embed:error con el código maplibre_error.
  • Un valor con caracteres no permitidos impide el montaje. La consola muestra [kaleidr:tile] Kaleidr tile: invalid style "…" — must match ^[A-Za-z0-9._:\/~-]{1,200}$.. Por eso una URL de estilo no puede llevar una cadena de consulta.

Cámara​

La cámara inicial usa la vista predeterminada del estilo, y cada campo que proporciones sustituye el valor correspondiente. Si el estilo no tiene vista predeterminada, muestra todo el mundo: centro [0, 20], zoom 2, sin inclinación ni rotación.

  • center indica primero la longitud: [-0.1276, 51.5072] corresponde a Londres.
  • Durante el montaje, zoom solo se utiliza junto con center.
  • pitch y bearing son independientes de center.

Dimensiones​

  • El iframe ocupa el 100 % del ancho del destino de montaje, carece de bordes y tiene esquinas redondeadas.
  • Su altura ocupa el 100 % del destino si este tiene altura en el momento del montaje; de lo contrario, se fija en 500 píxeles.
  • El montaje sustituye los hijos del destino y establece position:relative (si no hay posición en línea) y overflow:hidden.
  • <kaleidr-map> usa display:block por defecto, de modo que se le puede dar una height. Asigna una altura. Los ejemplos también declaran display:block para Safari anterior a la versión 16.4, donde el elemento permanece en línea.

Controlador​

Kaleidr.mount devuelve el controlador de forma síncrona. Consulta la matriz del controlador para todos los productos.

MiembroEn Tile
handle.product'tile'
handle.setCamera(camera)Mueve el mapa.
handle.setStyle(style)Cambia el mapa base sin volver a montarlo.
handle.setTheme(theme)No compatible; muestra una advertencia y no hace nada.
handle.destroy()Elimina el iframe y detiene las renovaciones de sesión.

setStyle(style)​

handle.setStyle('kaleidr-night');

Acepta un identificador de estilo o una URL completa, resueltos como styleId en el montaje. El iframe no se vuelve a cargar, la cámara mantiene su posición y no se contabiliza ninguna carga de mapa. Tile es el único producto que admite setStyle.

setCamera(camera)​

handle.setCamera({
center: [2.3522, 48.8566], // [longitude, latitude]
zoom: 12,
pitch: 45,
bearing: -20,
duration: 1200, // milliseconds
});
CampoTipoDescripción
center[number, number]Longitud, latitud.
zoomnúmeroNivel de zoom. A diferencia del montaje, aquí zoom funciona sin center.
pitchnúmeroInclinación en grados.
bearingnúmeroRotación en grados.
durationnúmeroDuración de la animación en milisegundos. Si se omite o es 0, el cambio es instantáneo.

Todos los campos son opcionales; los omitidos mantienen su valor actual.

Momento de ejecución​

Puedes llamar a setCamera y setStyle en cualquier momento después de que Kaleidr.mount devuelva el controlador, incluso en la línea siguiente. Las llamadas realizadas antes de que el mapa del iframe esté listo se conservan y aplican en orden cuando el mapa informa que está preparado. Se guardan las últimas 256. Si no hay confirmación tras una espera limitada, normalmente 10 segundos desde que se carga el iframe, se envían igualmente y aparece una advertencia en consola. No necesitas esperar al mensaje kaleidr-embed:ready. Para definir la vista y el estilo iniciales, sigue siendo preferible usar opciones de montaje, de modo que el mapa se abra directamente con ellos.

Atributos del elemento después del montaje​

En un <kaleidr-map product="tile"> montado, cambiar center, zoom, pitch o bearing mueve el mapa sin animación. Cambiar style-id, publishable-key u otro atributo no produce ningún efecto.

Mensajes del iframe​

// The basemap drew for the first time.
{ type: 'kaleidr-embed:ready', id: string, source: 'tile' }

// Something failed to draw.
{ type: 'kaleidr-embed:error', id: string, code: 'maplibre_error', message: string }

// No style: none was passed, and the organization has no default basemap.
{ type: 'kaleidr-embed:error', id: null, code: 'no_id', message: string }

id es el identificador o URL del estilo proporcionado. Con no_id vale null, el iframe muestra «Couldn't find a map id in the URL.» y no envía ready.

window.addEventListener('message', (event) => {
if (event.origin !== 'https://map-embed.kaleidr.com') return;
if (event.source !== target.querySelector('iframe')?.contentWindow) return;
const msg = event.data;
if (msg?.type === 'kaleidr-embed:ready') onReady(msg);
if (msg?.type === 'kaleidr-embed:error') onError(msg);
});
  • ready se envía una vez cuando el mapa ya se ha dibujado; no se repite tras setStyle.
  • maplibre_error puede recibirse varias veces, antes o después de ready.
  • El iframe se crea con loading="lazy", por lo que los mensajes no llegan hasta que se aproxima al área visible.
  • Una sesión rechazada no produce mensajes porque no se crea el iframe; consulta el error de la consola.
  • El iframe envía otros mensajes cuyo type empieza por kaleidr-embed:. El SDK los usa para conectar un panel de Chat al mapa; no forman parte del contrato público.

Sesiones y contabilización​

Por cada montaje de Tile, el SDK envía

POST https://api.kaleidr.com/inference-api/b2b/v1/sdk/sessions
x-api-key: kld_pk_live_…
content-type: application/json

{"product":"tile"}

y recibe

{
"session_token": "kld_sess_live_…",
"expires_in": 900,
"product": "tile",
"basemap_style_id": "kaleidr-morning"
}

basemap_style_id es el mapa base predeterminado de tu organización; vale null cuando no hay ninguno definido.

Cada intercambio correcto con "product":"tile" contabiliza una carga de mapa para tu organización. Los intercambios ocurren:

CuándoRecuento
Al montar1
90 segundos antes de que expire la sesión, mientras permanezca montado1 cada vez
Cuando la pestaña vuelve a estar visible y faltan 90 segundos o menos para expirar, o ya expiró1
En un nuevo montaje después de destroy(), o al volver a insertar un elemento eliminado1

Notas:

  • Una renovación fallida se reintenta cada 30 segundos; no elimina el mapa ya visible.
  • Si falla el primer intercambio, falla el montaje y no se reintenta automáticamente. Vuelve a montar para intentarlo de nuevo.
  • destroy() detiene las renovaciones.
  • Los movimientos de cámara, cambios de estilo e interacciones del visitante no se contabilizan.

Un intercambio de Tile se rechaza por la primera causa aplicable de esta lista:

EstadodetailCausa
403publishable_key_requiredLa clave no es publicable.
403origin_requiredLa solicitud no incluía un origen.
403origin_not_allowedEl origen de la página no está en la lista de orígenes permitidos de la clave.
403product_not_allowedLa clave está limitada a otros productos.
403tier_capability_not_allowedEl plan no permite este producto.
403insufficient_scopeLa clave carece del permiso maps.
429map_load_quota_exceededSe agotaron las cargas de mapa de la organización.

Antes de aplicar esas comprobaciones, el intercambio responde 404 sessions_disabled si está desactivado en la plataforma, o 503 sessions_not_configured si hay un fallo de plataforma. Ninguno de esos errores se debe a la clave. Consulta la lista completa en Errores.

Integración con Chat​

Un montaje de Chat puede controlar un elemento Tile. Asigna un id al elemento Tile y dirige a él el atributo map-target de Chat (opción mapTarget):

<div style="position:relative">
<kaleidr-map id="basemap" product="tile" publishable-key="kld_pk_live_…"
style-id="kaleidr-morning"
style="display:block; height:560px"></kaleidr-map>

<kaleidr-map product="chat" publishable-key="kld_pk_live_…" contained
map-target="#basemap"
style="display:block; position:absolute; inset:0; z-index:1; pointer-events:none"></kaleidr-map>
</div>

En un mapa Tile, el asistente dibuja pines con ventanas emergentes, encuadra los lugares con la cámara y dibuja rutas, el contorno de áreas como una ciudad y posiciones de vehículos en tiempo real. Consulta Usar un mapa base de Kaleidr para el tutorial, Temas y diseño para la disposición y Referencia de Chat para sus opciones.

Mensajes de consola​

MensajeSignificado
[kaleidr] <kaleidr-map> requires product="chat|viewer|editor|tile"El elemento no tiene un product válido; no se monta.
[kaleidr:tile] kaleidr session exchange failed (<status>)Intercambio rechazado. Consulta el motivo en la respuesta de la pestaña Red: detail para 403 y map_load_quota_exceeded; error para 429 rate_limited.
Un error CORS para …/sdk/sessions, seguido de un error de obtención de [kaleidr:tile]Clave desconocida o revocada, u origen no permitido. Como una denegación por origen carece de cabeceras CORS, el navegador oculta la respuesta al SDK.
[kaleidr:tile] Kaleidr: a server key (kld_sk_…) must never be used in the browser — it is a standing secret. Use your publishable key (kld_pk_…) here and keep the server key server-side.Se proporcionó una clave de servidor; no se envía ninguna solicitud.
[kaleidr:tile] Kaleidr tile: invalid style "…" — must match ^[A-Za-z0-9._:\/~-]{1,200}$.styleId tiene un carácter no permitido.
[kaleidr:tile] mount target not found: <selector>Kaleidr.mount no encontró ningún elemento para el selector.
[kaleidr:tile] [kaleidr] failed to load https://cdn.kaleidr.com/embed/v1/tile.jsNo se pudo cargar el paquete de Tile.
[kaleidr] setTheme() is not supported on product "tile" — the call is a no-op. …Se llamó a un método no admitido por Tile.
[kaleidr] setStyle() IS supported on product "tile", but this mount did not expose it, so the call did nothing. …La página usa un tile.js antiguo de la caché. Recarga sin caché.

No disponible​

  • Añadir marcadores, capas o ventanas emergentes propios al mapa.
  • Eventos de clics, movimientos de cámara o selecciones.
  • Leer de vuelta la posición de la cámara.
  • Usar el mapa sin el iframe.

Relacionado​