GlideGeoPoint Developer Guide
O guia do desenvolvedor GlideGeoPoint contém informações sobre como calcular distâncias entre valores de latitude e longitude (geopoints), retornar locais dentro de determinados valores de geopoint e raio e usar funcionalidades adicionais fornecidas pelo compatíveis GlideGeoPoint Funções de API.
. Geo point field type permite armazenar um par de latitude e longitude em um único campo. Geopoints podem ser úteis sempre que você quiser armazenar um ponto geográfico de interesse, para perguntar a que distância uma parte dois pontos de interesse estão um do outro ou para pesquisar todos os pontos dentro de uma determinada distância de outro ponto. Por exemplo, você pode usar a funcionalidade de ponto geográfico para determinar rapidamente todos os locais de entrega do cliente e ajustar as taxas de entrega com base na distância da loja.
- Consiste em um par de números decimais que representam valores de longitude e latitude.
- O intervalo de longitude é (-180, 180]. Qualquer valor fora desse intervalo é normalizado para o valor equivalente dentro desse intervalo.
- O intervalo de latitude é [-90, 90]. Qualquer valor fora desse intervalo é normalizado para o valor equivalente dentro desse intervalo.
- Os valores de pontos geográficos são sempre aceitos como entrada e exibidos como um par separado por vírgulas: "Longitude,latitude". Parênteses podem, opcionalmente, cercar a expressão.
- Os valores de longitude e latitude são armazenados com até 6 casas decimais de precisão.
Para obter mais informações sobre o tipo de dados de ponto geográfico, consulte Function field.
Os exemplos neste guia presumem que uma tabela personalizada, u_geopoint é preenchido com campos u_name e. u_location , em que u_name é do tipo "cadeia" e lista os nomes das principais cidades e. u_location é do tipo "geopoint" e lista os pontos de latitude/longitude de cada cidade, respectivamente.
Crie pontos geográficos usando a API GlideGeoPoint
Use GlideGeoPoint API para inserir novos registros e criar novos pontos geográficos.
. GlideGeoPoint - Global A API permite que você defina e recupere valores de pontos geográficos. No entanto, você pode executar funcionalidades adicionais para inserir novos registros definindo geopoints diretamente em um script usando notação de cadeia de caracteres ou um objeto GlideGeoPoint.
- Inserir um novo registro usando notação de cadeia de caracteres.
- Defina o valor do campo Geopoint
u_locationusando uma cadeia de caracteres. A cadeia de caracteres consiste em um par delimitado por vírgulas de valores de longitude e latitude. O exemplo a seguir mostra como definir um novo ponto geográfico nou_geopointtabela usando notação de cadeia de caracteres.Nota:GlideGeoPoint Os valores de API são sempre listados em longitude, ordem de latitude.const longitude = "-87.628018"; const latitude = "41.885778"; const geopoint = longitude + "," + latitude; const myGeoPoint = new GlideRecord("u_geopoint"); myGeoPoint.initialize(); myGeoPoint.setValue("u_name", "Chicago"); myGeoPoint.setValue("u_location", geopoint); myGeoPoint.insert(); - Inserir um novo registro usando o objeto GlideGeoPoint.
- Defina o valor do campo Geopoint
u_locationUsando um objeto GlideGeoPoint.const longitude = -87.628018; const latitude = 41.885778; const geopoint = new GlideGeoPoint(longitude, latitude); const myGeoPoint = new GlideRecord("u_geopoint"); myGeoPoint.initialize(); myGeoPoint.setValue("u_name", "Chicago"); myGeoPoint.setValue("u_location", geopoint); myGeoPoint.insert();
Leia valores de pontos geográficos usando a API GlideGeoPoint
Use ObtDisplayValue() Função da API GlideGeoPoint para ler todos os valores de geopoint de uma tabela específica.
A API GlideGeoPoint padrão permite recuperar um valor de geopoint por meio do GlideGeoPoint - getDisplayValue() função. No entanto, é possível ler todos os geopoints definidos em uma tabela inteira. O script de exemplo a seguir demonstra como usar o. ObtDisplayValue() função para recuperar todos os registros do u_geopoint tabela, que inclui o. u_location campo do tipo "geopoint". Este script de exemplo pode ser ajustado para seu próprio caso de uso específico.
const myGeoPoint = new GlideRecord("u_geopoint");
myGeoPoint.query();
while (gr.next())
gs.info("Name: {0} Location: {1}",
myGeoPoint.getDisplayValue('u_name'),
myGeoPoint.getDisplayValue('u_location'));
A saída retorna todos os registros no u_geopoint tabela. O valor de exibição de um ponto geográfico inclui a longitude seguida pela latitude, separada por uma vírgula e entre parênteses.
Name: London Location: (-0.189937, 51.473584)
Name: Puerto Rico Location: (-66.561301, 18.291136)
Name: Glasgow Location: (-4.223964, 55.867846)
Name: Chicago Location: (-87.628018, 41.885778)
Name: Tasmania Location: (146.757677, -42.173578)
Name: Bermuda Location: (-64.761595, 32.315798)
Name: Miami Location: (-80.206458, 25.767242)
Name: Sydney Location: (151.205230, -33.890115)
Name: Perth Location: (115.871253, -31.971583)
Name: Dublin Location: (-6.304994, 53.348317)
Calcule a distância entre dois pontos geográficos
Use distance_sphere função glide para retornar a distância entre geopontos em metros.
A função glide de ponto geográfico, distance_sphere , permite calcular a distância entre dois pontos geográficos. A função retorna a distância em metros. distance_sphere pode ser usado na definição de um elemento de campo de função em uma tabela ou por meio de um script. Três sintaxes são compatíveis e todos os parâmetros são necessários:
glidefunction:distance_sphere(geopoint1, geopoint2)glidefunction:distance_sphere(geopoint1, longitudinde2, latitude2)função:distance_sphere(lengito1, latitude1, lengito2, latitude2)
Ao usar essas sintaxes, observe que:
- geopoint1 e geopoint2 são elementos de tabela do tipo "geopoint"
- longitude 1, longitude 2, latitude 1, latitude 2 são elementos de tabela numérica ou constantes
- Em todos os casos, o valor de retorno desta função é um decimal que representa a distância entre dois geopontos em metros
O script de exemplo a seguir define um distance_sphere função para calcular a distância entre todos os pontos geográficos armazenados no u_location . u_geopoint e o ponto -0,189937 longitude, 51,473584 latitude (que é aproximadamente a localização de Londres). A função é adicionada à consulta GlideRecord para produzir resultados.
const distToLondon =
"glidefunction:distance_sphere(u_location, '-0.189937', '51.473584')";
const myGeoPoint = new GlideRecord('u_geopoint');
gr.addFunction(distToLondon);
gr.query();
while(myGeoPoint.next())
gs.info("Name: {0} Dist to London(m): {1}",
myGeoPoint.u_name, gr.getValue(distToLondon));
A saída lista a distância entre Londres e as cidades no u_location campo em metros.
Name: London Dist to London(m): 0
Name: Glasgow Dist to London(m): 555985.58456358
Name: Dublin Dist to London(m): 464000.328892816
Name: Miami Dist to London(m): 7123803.25406323
Name: Bermuda Dist to London(m): 5547607.95564083
Name: Puerto Rico Dist to London(m): 6799201.00905107
Name: Perth Dist to London(m): 14485217.5596414
Name: Sydney Dist to London(m): 17001034.4875494
Name: Tasmania Dist to London(m): 17324634.4559516
Filtre a distância entre dois pontos geográficos
Use DISTANCE_SPHERE_WITHIN condição de consulta para filtrar registros com um valor de ponto geográfico dentro do raio de uma latitude e ponto de longitude definidos.
DISTANCE_SPHERE_WITHIN deve seguir a sintaxe GeopointDISTANCE_SPHERE_WITHINlongitude, latitude > raio em que:
geopointé um campo de ponto geográfico longitudee.latitudesão constantes decimaiss.raioé uma constante decimal (em metros)
. DISTANCE_SPHERE_WITHIN aceita valores de quilômetros ou medidores na solicitação, mas sempre retorna o valor de saída em metros.
O script de exemplo a seguir mostra como criar uma consulta codificada que retorna somente registros com um u_location a menos de 1,000,000 quilômetros de distância do ponto -0,189937 longitude, 51,473584 latitude (que é aproximadamente a localização de Londres). Quando executado, ele retorna três registros que representam cidades dentro do raio especificado de Londres.
const myGeoPoint = new GlideRecord("u_geopoint");
myGeoPoint.addEncodedQuery("u_locationDISTANCE_SPHERE_WITHIN-0.189937,51.473584<1000000");
myGeoPoint.query();
while(gr.next())
gs.info("Name:" + myGeoPoint.getDisplayValue("u_name")
+ " Location:" + myGeoPoint.getDisplayValue("u_location"));
Saída:
Name:London Location:(-0.189937, 51.473584)
Name:Dublin Location:(-6.304994, 53.348317)
Name:Glasgow Location:(-4.223964, 55.867846)
O script de exemplo a seguir é equivalente ao primeiro, mas usa uma sintaxe alternativa para GlideRecord.
const myGeoPoint = new GlideRecord("u_geopoint");
myGeoPoint.addQuery("u_location", "DISTANCE_SPHERE_WITHIN", "-0.189937,51.473584<1000000");
myGeoPoint.query();
while(myGeoPoint.next())
gs.info("Name:" + myGeoPoint.getDisplayValue("u_name")
+ " Location:" + myGeoPoint.getDisplayValue("u_location"));
Saída:
Name:London Location:(-0.189937, 51.473584)
Name:Dublin Location:(-6.304994, 53.348317)
Name:Glasgow Location:(-4.223964, 55.867846)