Campo personalizzato di geolocalizzazione
Il campo personalizzato di geolocalizzazione consente di identificare le posizioni in base alla loro latitudine e longitudine e di calcolare le distanze tra le posizioni.
Versioni (Edition) richieste
| Disponibile in: Salesforce Classic e Lightning Experience |
| Disponibile in: tutte le versioni |
È possibile calcolare la distanza tra due campi di geolocalizzazione, ad esempio tra un magazzino e un punto vendita. Oppure è possibile calcolare la distanza tra un campo di geolocalizzazione e una coppia di coordinate di latitudine e longitudine, ad esempio tra un magazzino e 37,794016°, -122,395016°, la posizione nota anche come San Francisco. I valori di latitudine devono essere compresi tra -90 e 90. I valori di longitudine devono essere compresi tra -180 e 180.
Posizione geografica è un filtro composto che viene conteggiato rispetto ai limiti dell’organizzazione come tre campi personalizzati: uno per la latitudine, uno per la longitudine e uno per uso interno. Il supporto per il campo composto (geolocalizzazione) rispetto ai componenti del campo (latitudine e longitudine) varia a seconda delle funzionalità utilizzate in Salesforce. Ad esempio, è possibile creare visualizzazioni elenco che mostrano il campo e i relativi componenti, ma non è possibile selezionare il campo di geolocalizzazione composto in Apex. È possibile eseguire query SOQL solo sui componenti di un campo di geolocalizzazione.
Considerazioni sui campi composti e di geolocalizzazione
I campi composti, inclusi i campi di geolocalizzazione, presentano le seguenti limitazioni.
- I campi composti sono di sola lettura. Per aggiornare i valori dei campi, modificare i singoli componenti dei campi.
- I campi composti sono accessibili solo tramite API SOAP, API REST e Apex. Le versioni composte dei campi non sono accessibili da nessuna parte nell'interfaccia utente di Salesforce.
- Sebbene i campi composti possano essere sottoposti a query con le classi Apex
LocationeAddress, sono modificabili solo come componenti del campo effettivo. Leggere e impostare i componenti dei campi di geolocalizzazione aggiungendo "__latitude__s" o "__longitude__s" al nome del campo, anziché la solita "__c". Ad esempio:
Non è possibile accedere o impostare il valore composto.Double theLatitude = myObject__c.aLocation__latitude__s; myObject__c.aLocation__longitude__s = theLongitude; - Non è possibile utilizzare campi composti in Visualforce, ad esempio in un
<apex:outputField>. Per accedere o aggiornare i valori dei campi, utilizzare i singoli componenti dei campi. - Se si selezionano dei campi composti per l'esportazione in Data Loader, questi possono generare dei messaggi di errore. Per esportare i valori, utilizzare componenti di campi singoli.
- I campi di geolocalizzazione e posizione personalizzati sugli indirizzi standard non sono supportati con i modelli di email.
- Non è possibile utilizzare campi composti nei filtri di ricerca, tranne per filtrare le distanze che rientrano o meno in determinati intervalli. È possibile utilizzare i filtri di ricerca a distanza solo nell'API dei metadati.
-
Le uniche funzioni di formula utilizzabili con i campi composti sono
ISBLANK,ISCHANGEDeISNULL. Non è possibile utilizzareBLANKVALUE,CASE,NULLVALUE,PRIORVALUEo gli operatori di uguaglianza e confronto con i campi composti. Gli operatori di uguaglianza e confronto includono=e==(uguale a),<>e!=(non uguale a),<(minore di),>(maggiore di),<=(minore o uguale a),>=(maggiore o uguale a),&&(AND) e||(OR).
Considerazioni sui campi di geolocalizzazione
Questo elenco contiene limitazioni per i campi di geolocalizzazione.
- I campi di geolocalizzazione non sono supportati nelle impostazioni personalizzate.
- I campi di geolocalizzazione non sono disponibili nei cruscotti digitali o nel Generatore di schemi.
- I campi di geolocalizzazione sono disponibili nel flusso di lavoro visivo e nel flusso di lavoro e nelle approvazioni basati su formule, ma non possono essere utilizzati negli aggiornamenti e nelle approvazioni del flusso di lavoro basati su filtri.
- Le formule di
DISTANCEsono supportate in:- Criteri di immissione per le regole di flusso di lavoro e i processi di approvazione
- Azioni di aggiornamento di campo nelle regole di flusso di lavoro e nei processi di approvazione
- Regole di convalida personalizzate
- Filtri di ricerca (solo nell'API dei metadati)
- I campi di geolocalizzazione e la latitudine e longitudine sugli indirizzi standard non sono supportati in Salesforce to Salesforce.
- Nelle versioni Developer Edition, Professional Edition, Enterprise Edition, Unlimited Edition e Performance Edition, Salesforce può aggiungere o aggiornare automaticamente i campi di geolocalizzazione per i record Account, Referente, Lead e WorkOrder. Per utilizzare questa funzione, l'amministratore deve abilitare la regola di integrazione dei dati geografici per ogni oggetto. Per tutti gli altri oggetti e versioni, impostare i valori per latitudine e longitudine utilizzando SOQL, SOAP o l'API REST o un servizio di georeferenziazione. È quindi possibile utilizzare i campi indirizzo come valori individuabili. Per trovare servizi di georeferenziazione, cercare AppExchange.
- I campi di geolocalizzazione sono supportati in SOQL con le seguenti limitazioni.
DISTANCEeGEOLOCATIONsono supportati nelle clausoleWHEREeORDER BYin SOQL, ma non inGROUP BY.DISTANCEè supportato nelle clausoleSELECT.DISTANCEsupporta solo gli operatori logici > e <, restituendo valori entro (<) o oltre (>) un raggio specificato.- Quando si utilizza la funzione
GEOLOCATIONnelle query SOQL, il campo di geolocalizzazione deve precedere le coordinate di latitudine e longitudine. Ad esempio,DISTANCE(warehouse_location__c, GEOLOCATION(37.775,-122.418), 'km')funziona maDISTANCE(GEOLOCATION(37.775,-122.418), warehouse_location__c, 'km')non funziona. -
Le variabili di binding Apex non sono supportate per il parametro units nella funzione
DISTANCE. Questa query non funziona.String units = 'mi'; List<Account> accountList = [SELECT ID, Name, BillingLatitude, BillingLongitude FROM Account WHERE DISTANCE(My_Location_Field__c, GEOLOCATION(10,10), :units) < 10];

