Crea campi di posizione per memorizzare coordinate geografiche per i record
I campi personalizzati di posizione memorizzano coordinate geografiche (latitudine e longitudine) per i record. Supportano la memorizzazione precisa delle coordinate, le query geospaziali e il filtraggio basato sulla posizione in modo efficiente.
Esempio di Base
Crea un semplice campo di posizione:
mutation CreateLocationField {
createCustomField(input: {
name: "Meeting Location"
type: LOCATION
projectId: "proj_123"
}) {
id
name
type
}
}
Esempio Avanzato
Crea un campo di posizione con descrizione:
mutation CreateDetailedLocationField {
createCustomField(input: {
name: "Office Location"
type: LOCATION
projectId: "proj_123"
description: "Primary office location coordinates"
}) {
id
name
type
description
}
}
Parametri di Input
CreateCustomFieldInput
Parametro | Tipo | Richiesto | Descrizione |
---|---|---|---|
name |
String! | ✅ Sì | Nome visualizzato del campo di posizione |
type |
CustomFieldType! | ✅ Sì | Deve essere LOCATION |
description |
String | No | Testo di aiuto mostrato agli utenti |
Impostazione dei Valori di Posizione
I campi di posizione memorizzano coordinate di latitudine e longitudine:
mutation SetLocationValue {
setTodoCustomField(input: {
todoId: "todo_123"
customFieldId: "field_456"
latitude: 40.7128
longitude: -74.0060
})
}
Parametri di SetTodoCustomFieldInput
Parametro | Tipo | Richiesto | Descrizione |
---|---|---|---|
todoId |
String! | ✅ Sì | ID del record da aggiornare |
customFieldId |
String! | ✅ Sì | ID del campo personalizzato di posizione |
latitude |
Float | No | Coordinata di latitudine (-90 a 90) |
longitude |
Float | No | Coordinata di longitudine (-180 a 180) |
Nota: Sebbene entrambi i parametri siano facoltativi nello schema, entrambe le coordinate sono necessarie per una posizione valida. Se ne viene fornita solo una, la posizione sarà non valida.
Validazione delle Coordinate
Intervalli Validi
Coordinata | Intervallo | Descrizione |
---|---|---|
Latitude | -90 to 90 | Posizione Nord/Sud |
Longitude | -180 to 180 | Posizione Est/Ovest |
Coordinate di Esempio
Posizione | Latitudine | Longitudine |
---|---|---|
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 |
Creazione di Record con Valori di Posizione
Quando si crea un nuovo record con dati di posizione:
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 di Input per la Creazione
Quando si creano record, i valori di posizione utilizzano un formato separato da virgole:
Formato | Esempio | Descrizione |
---|---|---|
"latitude,longitude" |
"40.7128,-74.0060" |
Formato standard delle coordinate |
"51.5074,-0.1278" |
London coordinates | Nessuno spazio attorno alla virgola |
"-33.8688,151.2093" |
Sydney coordinates | Valori negativi consentiti |
Campi di Risposta
TodoCustomField Risposta
Campo | Tipo | Descrizione |
---|---|---|
id |
String! | Identificatore unico per il valore del campo |
customField |
CustomField! | La definizione del campo personalizzato |
latitude |
Float | Coordinata di latitudine |
longitude |
Float | Coordinata di longitudine |
todo |
Todo! | Il record a cui appartiene questo valore |
createdAt |
DateTime! | Quando è stato creato il valore |
updatedAt |
DateTime! | Quando è stato modificato per l'ultima volta il valore |
Limitazioni Importanti
Nessuna Geocodifica Integrata
I campi di posizione memorizzano solo coordinate - non includono:
- Conversione indirizzo-coordinata
- Geocodifica inversa (coordinata-indirizzo)
- Validazione o ricerca degli indirizzi
- Integrazione con servizi di mappatura
- Ricerca di nomi di luoghi
Servizi Esterni Richiesti
Per la funzionalità degli indirizzi, è necessario integrare servizi esterni:
- Google Maps API per la geocodifica
- OpenStreetMap Nominatim per geocodifica gratuita
- MapBox per mappatura e geocodifica
- Here API per servizi di localizzazione
Esempio di Integrazione
// 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
});
}
}
Permessi Richiesti
Azione | Ruolo Richiesto |
---|---|
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 |
Risposte di Errore
Coordinate Non Valide
{
"errors": [{
"message": "Invalid coordinates: latitude must be between -90 and 90",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Longitudine Non Valida
{
"errors": [{
"message": "Invalid coordinates: longitude must be between -180 and 180",
"extensions": {
"code": "CUSTOM_FIELD_VALUE_PARSE_ERROR"
}
}]
}
Migliori Pratiche
Raccolta Dati
- Utilizzare coordinate GPS per posizioni precise
- Validare le coordinate prima di memorizzarle
- Considerare le esigenze di precisione delle coordinate (6 decimali ≈ 10 cm di accuratezza)
- Memorizzare le coordinate in gradi decimali (non in gradi/minuti/secondi)
Esperienza Utente
- Fornire interfacce mappa per la selezione delle coordinate
- Mostrare anteprime della posizione quando si visualizzano le coordinate
- Validare le coordinate lato client prima delle chiamate API
- Considerare le implicazioni del fuso orario per i dati di posizione
Prestazioni
- Utilizzare indici spaziali per query efficienti
- Limitare la precisione delle coordinate all'accuratezza necessaria
- Considerare la memorizzazione nella cache per posizioni frequentemente accessibili
- Aggiornare le posizioni in batch quando possibile
Casi d'Uso Comuni
-
Operazioni sul Campo
- Posizioni delle attrezzature
- Indirizzi delle chiamate di servizio
- Siti di ispezione
- Posizioni di consegna
-
Gestione Eventi
- Luoghi degli eventi
- Posizioni degli incontri
- Siti delle conferenze
- Luoghi dei workshop
-
Tracciamento delle Risorse
- Posizioni delle attrezzature
- Posizioni delle strutture
- Tracciamento dei veicoli
- Posizioni dell'inventario
-
Analisi Geografica
- Aree di copertura del servizio
- Distribuzione dei clienti
- Analisi di mercato
- Gestione del territorio
Funzionalità di Integrazione
Con Ricerche
- Riferire i dati di posizione da altri record
- Trovare record per prossimità geografica
- Aggregare dati basati sulla posizione
- Incrociare coordinate
Con Automazioni
- Attivare azioni basate su cambiamenti di posizione
- Creare notifiche geofence
- Aggiornare record correlati quando cambiano le posizioni
- Generare report basati sulla posizione
Con Formule
- Calcolare distanze tra posizioni
- Determinare centri geografici
- Analizzare modelli di posizione
- Creare metriche basate sulla posizione
Limitazioni
- Nessuna geocodifica integrata o conversione degli indirizzi
- Nessuna interfaccia di mappatura fornita
- Richiede servizi esterni per la funzionalità degli indirizzi
- Limitato solo alla memorizzazione delle coordinate
- Nessuna validazione automatica della posizione oltre il controllo dell'intervallo
Risorse Correlate
- Panoramica dei Campi Personalizzati - Concetti generali
- Google Maps API - Servizi di geocodifica
- OpenStreetMap Nominatim - Geocodifica gratuita
- MapBox API - Servizi di mappatura e geocodifica