Crea campos de ubicación para almacenar coordenadas geográficas para registros
Los campos personalizados de ubicación almacenan coordenadas geográficas (latitud y longitud) para registros. Soportan almacenamiento preciso de coordenadas, consultas geoespaciales y filtrado eficiente basado en la ubicación.
Ejemplo Básico
Crea un campo de ubicación simple:
mutation CreateLocationField {
createCustomField(input: {
name: "Meeting Location"
type: LOCATION
projectId: "proj_123"
}) {
id
name
type
}
}
Ejemplo Avanzado
Crea un campo de ubicación con descripción:
mutation CreateDetailedLocationField {
createCustomField(input: {
name: "Office Location"
type: LOCATION
projectId: "proj_123"
description: "Primary office location coordinates"
}) {
id
name
type
description
}
}
Parámetros de Entrada
CreateCustomFieldInput
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
name |
String! | ✅ Sí | Nombre para mostrar del campo de ubicación |
type |
CustomFieldType! | ✅ Sí | Debe ser LOCATION |
description |
String | No | Texto de ayuda mostrado a los usuarios |
Estableciendo Valores de Ubicación
Los campos de ubicación almacenan coordenadas de latitud y longitud:
mutation SetLocationValue {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
latitude: 40.7128
longitude: -74.0060
})
}
Parámetros de SetTodoCustomFieldInput
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
todoId |
String! | ✅ Sí | ID del registro a actualizar |
customFieldId |
String! | ✅ Sí | ID del campo personalizado de ubicación |
latitude |
Float | No | Coordenada de latitud (-90 a 90) |
longitude |
Float | No | Coordenada de longitud (-180 a 180) |
Nota: Aunque ambos parámetros son opcionales en el esquema, se requieren ambas coordenadas para una ubicación válida. Si solo se proporciona una, la ubicación será inválida.
Validación de Coordenadas
Rangos Válidos
Coordenada | Rango | Descripción |
---|---|---|
Latitude | -90 to 90 | Posición Norte/Sur |
Longitude | -180 to 180 | Posición Este/Oeste |
Ejemplo de Coordenadas
Ubicación | Latitud | Longitud |
---|---|---|
New York City | 40.7128 | -74.0060 |
London | 51.5074 | -0.1278 |
Sydney | -33.8688 | 151.2093 |
Tokyo | 35.6762 | 139.6503 |
São Paulo | -23.5505 | -46.6333 |
Creando Registros con Valores de Ubicación
Al crear un nuevo registro con datos de ubicación:
mutation CreateRecordWithLocation {
createTodo(input: {
title: "Site Visit"
todoListId: "list_123"
customFields: [{
customFieldId: "location_field_id"
value: "40.7128,-74.0060" # Format: "latitude,longitude"
}]
}) {
id
title
customFields {
id
customField {
name
type
}
latitude
longitude
}
}
}
Formato de Entrada para Creación
Al crear registros, los valores de ubicación utilizan un formato separado por comas:
Formato | Ejemplo | Descripción |
---|---|---|
"latitude,longitude" |
"40.7128,-74.0060" |
Formato de coordenada estándar |
"51.5074,-0.1278" |
London coordinates | Sin espacios alrededor de la coma |
"-33.8688,151.2093" |
Sydney coordinates | Se permiten valores negativos |
Campos de Respuesta
Respuesta de TodoCustomField
Campo | Tipo | Descripción |
---|---|---|
id |
String! | Identificador único para el valor del campo |
customField |
CustomField! | La definición del campo personalizado |
latitude |
Float | Coordenada de latitud |
longitude |
Float | Coordenada de longitud |
todo |
Todo! | El registro al que pertenece este valor |
createdAt |
DateTime! | Cuándo se creó el valor |
updatedAt |
DateTime! | Cuándo se modificó por última vez el valor |
Limitaciones Importantes
Sin Geocodificación Incorporada
Los campos de ubicación solo almacenan coordenadas - no incluyen:
- Conversión de dirección a coordenadas
- Geocodificación inversa (coordenadas a dirección)
- Validación o búsqueda de direcciones
- Integración con servicios de mapas
- Búsqueda de nombres de lugares
Servicios Externos Requeridos
Para la funcionalidad de dirección, necesitarás integrar servicios externos:
- Google Maps API para geocodificación
- OpenStreetMap Nominatim para geocodificación gratuita
- MapBox para mapeo y geocodificación
- Here API para servicios de ubicación
Ejemplo de Integración
// Client-side geocoding example (not part of Blue API)
async function geocodeAddress(address) {
const response = await fetch(
`https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${API_KEY}`
);
const data = await response.json();
if (data.results.length > 0) {
const { lat, lng } = data.results[0].geometry.location;
// Now set the location field in Blue
await setTodoCustomField({
todoId: "todo_123",
customFieldId: "location_field_456",
latitude: lat,
longitude: lng
});
}
}
Permisos Requeridos
Acción | Rol Requerido |
---|---|
Create location field | OWNER , ADMIN , or MEMBER in the project |
Update location field | OWNER , ADMIN , or MEMBER in the project |
Set location value | OWNER , ADMIN , MEMBER , or CLIENT with edit permissions on the record |
View location value | Any project member with read access to the record |
Respuestas de Error
Coordenadas Inválidas
{
"errors": [{
"message": "Invalid coordinates: latitude must be between -90 and 90",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Longitud Inválida
{
"errors": [{
"message": "Invalid coordinates: longitude must be between -180 and 180",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Mejores Prácticas
Recolección de Datos
- Usa coordenadas GPS para ubicaciones precisas
- Valida las coordenadas antes de almacenarlas
- Considera las necesidades de precisión de las coordenadas (6 decimales ≈ 10cm de precisión)
- Almacena coordenadas en grados decimales (no en grados/minutos/segundos)
Experiencia del Usuario
- Proporciona interfaces de mapa para la selección de coordenadas
- Muestra vistas previas de ubicación al mostrar coordenadas
- Valida las coordenadas del lado del cliente antes de las llamadas a la API
- Considera las implicaciones de la zona horaria para los datos de ubicación
Rendimiento
- Usa índices espaciales para consultas eficientes
- Limita la precisión de las coordenadas a la precisión necesaria
- Considera el almacenamiento en caché para ubicaciones de acceso frecuente
- Agrupa actualizaciones de ubicación cuando sea posible
Casos de Uso Comunes
-
Operaciones de Campo
- Ubicaciones de equipos
- Direcciones de llamadas de servicio
- Sitios de inspección
- Ubicaciones de entrega
-
Gestión de Eventos
- Lugares de eventos
- Ubicaciones de reuniones
- Sitios de conferencias
- Ubicaciones de talleres
-
Seguimiento de Activos
- Posiciones de equipos
- Ubicaciones de instalaciones
- Seguimiento de vehículos
- Ubicaciones de inventario
-
Análisis Geográfico
- Áreas de cobertura de servicio
- Distribución de clientes
- Análisis de mercado
- Gestión de territorios
Características de Integración
Con Búsquedas
- Referencia datos de ubicación de otros registros
- Encuentra registros por proximidad geográfica
- Agrega datos basados en la ubicación
- Referencia cruzada de coordenadas
Con Automatizaciones
- Dispara acciones basadas en cambios de ubicación
- Crea notificaciones geocercadas
- Actualiza registros relacionados cuando cambian las ubicaciones
- Genera informes basados en la ubicación
Con Fórmulas
- Calcula distancias entre ubicaciones
- Determina centros geográficos
- Analiza patrones de ubicación
- Crea métricas basadas en la ubicación
Limitaciones
- Sin geocodificación incorporada o conversión de direcciones
- No se proporciona interfaz de mapeo
- Requiere servicios externos para funcionalidad de dirección
- Limitado solo al almacenamiento de coordenadas
- Sin validación automática de ubicación más allá de la verificación de rango
Recursos Relacionados
- Descripción General de Campos Personalizados - Conceptos generales
- Google Maps API - Servicios de geocodificación
- OpenStreetMap Nominatim - Geocodificación gratuita
- MapBox API - Servicios de mapeo y geocodificación