# GPS

Conjunto de comandos relacionados con la geolocalización en dispositivos móviles.

Son funcionales únicamente en Android y en iOS.

Se usarán los sistemas de posicionamiento habilitados en el dispositivo. Hay que tener en cuenta que si requiere más precisión, habrá que optar por el uso de satélites y que ese modo tiene las características habituales (como en cualquier aplicación que lo use en nuestro móvil):

* Al principio, puede tardar un tiempo en obtener la señal de los satélites necesarios para un buen posicionamiento.
* Usar los datos de precisión para saber si la posición obtenida se ajusta a nuestras necesidades o debemos esperar a que haya mayor precisión.
* La aplicación [Velneo vClient](https://doc.velneo.com/velneo-vclient) o la [aplicación personalizada en Android](https://doc.velneo.com/velneo-vclient/funcionalidades-especificas/instalador-personalizado-de-velneo-vclient), debe tener permisos para usar la ubicación mientras ésta esté en uso.

## **GPS: Iniciar**‌

Inicia la localización GPS del dispositivo.

**Origen de la instrucción**: cualquiera.

**‌Destino del subproceso**: ninguno.‌

#### Parámetros

* **Modo de GPS**

  Permite indicar el modo de GPS. Los valores posibles son:

  * ***Celdas/Wifi***: para el posicionamiento hace uso de las wifi que detecta cerca.
  * ***Satélite***: para el posicionamiento hace uso de la información de satélites GPS.
  * ***Todos***: combina las dos anteriores.
* **Intervalo de actualización (milisegundos) (opcional)**

  Nos permite establecer un intervalo de actualización de la localización. Si lo dejamos vacío o le ponemos un valor 0 el intervalo la fuente a la que se esté conectado actualizará tan a menudo como sea necesario. Dependerá directamente de la calidad de la conexión.
* **Identificador de variable local booleana de retorno del resultado del sistema de geoposicionamiento (opcional)**

  Variable local ‌que retornará si se ha conseguido posicionar (1) o no (0).

#### Funcionalidad

Este comando de instrucción de proceso permite iniciar el geoposicionaimento del dispositivo.

Podemos crear una [conexión de evento](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/sub-objetos-de-vistas-de-datos/conexion-de-evento) en el [marco](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/marco) de la aplicación que se dispare cada vez que se actualice la geoposición. Para ello debemos usar la señal [geoposición actualizada](https://doc.velneo.com/velneo-vdevelop/proyecto-de-aplicacion/sub-objetos-de-vistas-de-datos/conexion-de-evento#senal).

#### Ejemplo

```
GPS: Iniciar ( Todos, 10000, BOK )
If ( !BOK )
    Mensaje ( "No se ha podido iniciar la geololcalización", Información, , )
```

## ‌GPS: Obtener última posición

‌Obtiene los datos de la última posición registrada de GPS.

**Origen de la instrucción**: cualquiera.

**‌Destino del subproceso**: ninguno.‌

#### Parámetros‌

* **Identificador de variable local array numérica de retorno de longitud , latitud, altitud y dirección**

  Variable local de tipo array donde se retornarán los siguientes valores en las siguientes posiciones:

  * Longitud \[0]: es la coordenada geográfica que especifica la posición de un punto en la superficie terrestre en la dirección este u oeste. Se expresa en grados, desde −180ª (hacia el oeste) hasta +180ª (hacia el este).
  * Latitud \[1]: es la coordenada geográfica que indica la posición de un punto en la superficie terrestre en la dirección norte o sur. Se expresa en grados, desde −90ª (en el Polo Sur) hasta +90ª (en el Polo Norte).
  * Altitud\[2]: indica la elevación o la altura a la que se encuentra el receptor GPS. Se especifica en metros.
  * Dirección\[3]: indica la dirección en la que el dispositivo se está moviendo. Generalmente, se expresa en grados, donde 0° o 360° es el norte, 90° es el este, 180° es el sur y 270° es el oeste. en esta posición devolverá un valor únicamente cuando el dispositivo está en funcionamiento y cambian sus posiciones geográficas.
* **Identificador de variable local tiempo de retorno de tiempo UTC (opcional)**

  Nos permite especificar una variable local de tipo tiempo donde se retornará la fecha/hora UTC de la operación.
* **Identificador de variable local numérica de retorno de modo de GPS (opcional)**

  Variable local de tipo numérico que permite recoger el modo de GPS utilizado. Los valores posibles son:

  * 0 (Todos).
  * 1 (Satélite: para el posicionamiento hace uso de la información de satélites GPS).
  * 2 (Celdas/Wifi).
* **Identificador de variable local array numérica de retorno de precisión horizontal, vertical y número de satélites (opcional)**

  Variable local de tipo array que permite recoger la precisión horizontal, vertical y número de satélites en las posiciones siguientes:

  * Precisión horizontal \[0]
  * Precisión vertical  \[1]
  * Número de satélites en uso \[2]
  * Número de satélites en vista \[3]
  * Velocidad horizontal \[4]
  * Velocidad vertical \[5]

#### Funcionalidad

Este comando de instrucción de proceso permite obtener la última posición posición GPS del dispositivo.

#### Ejemplo

Obtener la posición CPS de un dispositivo móvil  y mostrarlo en la aplicación de mapas:

```
GPS: Iniciar ( Todos, 1000, OK_INICIADO )
If ( OK )
    GPS: Obtener última posición ( POS, TMP, MOD, SAT )
    Set ( PLATAFORMA, getSysPlatform() )
    If ( PLATAFORMA = "ios" )
        Ejecutar documento ( "maps:" + "0,0?q=" + POS[1] +"," + POS[0], )
    Mensaje ( "Va a parar el gps", Información, , )
    If ( PLATAFORMA = "android" )
        Ejecutar documento ( "geo:0,0?q=" + POS[1] +"," + POS[0], )
    GPS: Parar
Else
    Mensaje ( "No se ha podido iniciar el GPS", Información, , )
```

## GPS: Parar

‌Detiene la localización GPS del dispositivo.

**Origen de la instrucción**: cualquiera.

**‌Destino del subproceso**: ninguno.‌

#### Parámetros

* No tiene

#### Funcionalidad

Este comando de instrucción de proceso finaliza la localización GPS.

#### Ejemplo

Obtener la posición GPS de un dispositivo iOS o Android y mostrarlo en la aplicación de mapas:

```
GPS: Iniciar ( Todos, 1000, OK_INICIADO )
If ( OK_INICIADO )
    GPS: Obtener última posición ( POS, TMP, MOD, SAT )
    Set ( PLATAFORMA, getSysPlatform() )
    If ( PLATAFORMA = "ios" )
        Ejecutar documento ( "maps:" + "0,0?q=" + POS[1] +"," + POS[0], )
    If ( PLATAFORMA = "android" )
        Ejecutar documento ( "geo:0,0?q=" + POS[1] +"," + POS[0], )
    GPS: Parar
Else
    Mensaje ( "No se ha podido iniciar el GPS", Información, , )
```

<br>

<br>
