Enviando dados para o mobile
Trabalhando com geofence
OBS.: o campo coordinates, contém os dados de longitude e latitude, nessa ordem. No mobile, existe a função de detecção de área (geofence), esta funcionalidade espera receber primeiro a latitude e depois a longitude. Portanto, no entryPoint de envio de dados é necessário gravar a localização de forma invertida, como no exemplo abaixo:
$result = NFSQueryBuilder::select([
"t.SEQ_DB id",
"t.SEQ_DB area",
"t.DESCRICAO name",
"t.DESCRICAO description",
"'ENTER' notify",
"g.GEOJSON",
"CONCAT('Entrou na área: ',t.DESCRICAO) enterText",
"CONCAT('Saiu da área: ',t.DESCRICAO) exitText",
])
->from('CLIENTE','t')
->innerJoin('t', 'GIS_OBJECT', 'g', 'g.SEQ_DB = t.GIS_OBJECT_SEQ_DB')
->orderBy('t.SEQ_DB', 'ASC')
->get();
$_recordsToMobileXMOVA = $result;
foreach($result as $key => $row) {
$coord = '';
$obj = json_decode($row['GEOJSON']);
$objArray = $obj->{'geometry'}->{'coordinates'}[0];
foreach($objArray as $keyA => $rowA) {
$coord = $coord.$rowA[1].',';
$coord = $coord.$rowA[0].';';
}
$_recordsToMobileXMOVA[$key]['coordinates'] = $coord;
unset($_recordsToMobileXMOVA[$key]['GEOJSON']);
}
Trabalhando com GIS (após a versão 3.3.2)
OBS.: o campo geometry, contém os dados de latitude e longitude, e deve ser enviado como no exemplo:
[geometry] => POLYGON((-17.058126 -46.188592,-17.064034 -46.189278,-17.064814 -46.182672,-17.067767 -46.182887,-17.067932 -46.180227,-17.067849 -46.17598,-17.059726 -46.175079,-17.058126 -46.188592))
Portanto, no entryPoint de envio de dados é necessário utilizar as funções:
- ST_GeomFromGeoJson: para transformar o conteúdo das coordenadas em objeto
- ST_AsText: para transformar o objeto em texto
Veja mais em: postgis.net {.is-info}
$_recordsToMobileXMOVA = NFSQueryBuilder::select([
"t.SEQ_DB id",
"t.DESCRICAO name",
"ST_AsText(ST_GeomFromGeoJson(g.GEOJSON)) geometry",
])
->from('CLIENTE','t')
->innerJoin('t', 'GIS_OBJECT', 'g', 'g.SEQ_DB = t.GIS_OBJECT_SEQ_DB')
->orderBy('t.SEQ_DB', 'ASC')
->get();
MOBILE
Trabalhando com geofence
Após a versão 3.3.2, usar exemplo do fluxo 100123104 {.is-warning}
Ver exemplo no fluxo de homologação 100123102
APP
Configurar o atributo geofence
App appCode=Teste
...
location
//Habilita a funcionalidade de geofencing
geofence
MODEL
Adicionar entidades: _GEOFENCE_LOCATION e _GEOFENCE_PLACE
//------------------------GEOFENCE INICIO--------------------------
_GEOFENCE_LOCATION sync=out
id inc
place _GEOFENCE_PLACE inlineData
location Location inlineData
entered boolean
events
OnGeolocationTransitionEnter
_area = :place.id
actionbarsubtitle place.description
OnGeolocationTransitionExit
_area = null
actionbarsubtitle @
_GEOFENCE_PLACE sync=in emptyVerify=false
id int
name String
description String inUpper
coordinates String
notify String
enterText String
exitText String
area long
server name=EQP_Geofence_Place
//------------------------GEOFENCE FIM--------------------------
Trabalhando com GIS
Nova funcionalidade GIS + geometry
Ver exemplo no fluxo de homologação 100123104
APP
Configurar o atributo geofence
App appCode=Teste
...
location
MODEL
Adicionar entidade com um campo do tipo Geometry
//------------------------GEOFENCE INICIO--------------------------
Place sync=in emptyVerify=false
id int
name String
geometry Geometry
server name=EQP_Geometry
//------------------------GEOFENCE FIM--------------------------
Veja mais em: documentação do xMova