public void mostrar()
    {
        contador++;
        giro.text = contador + "";

        //label.text=("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
        //lat.text = Input.location.lastData.latitude+"";
        //lon.text = Input.location.lastData.longitude+"";
        posicionTarget = new PosicionGPS(Input.location.lastData.latitude, Input.location.lastData.longitude);
        //dis.text = calcularDistancia (posicionBase,posicionTarget)+"";
        PosicionGPS nuevaY = new PosicionGPS(posicionTarget.lat, posicionBase.lon);
        PosicionGPS nuevaX = new PosicionGPS(posicionBase.lat, posicionTarget.lon);
        double      posX   = calcularDistancia(posicionBase, nuevaX);
        double      posY   = calcularDistancia(posicionBase, nuevaY);

        //disX.text = posX + "";
        //disY.text = posY + "";

        if (posicionTarget.lat < posicionBase.lat)
        {
            posY *= -1.0;
        }

        if (posicionTarget.lon < posicionBase.lon)
        {
            posX *= -1.0;
        }

        transform.position = new Vector3(((float)(posX * 1000)), 2, ((float)(posY * 1000)));
    }
    public static double calcularDistancia(PosicionGPS p1, PosicionGPS p2)
    {
        double dLat = (p2.lat - p1.lat) * pi_sobre_180;        // deg2rad below
        double dLon = (p2.lon - p1.lon) * pi_sobre_180;

        double a =
            Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
            Math.Cos(p1.lat * pi_sobre_180) * Math.Cos(p2.lat * pi_sobre_180) *
            Math.Sin(dLon / 2) * Math.Sin(dLon / 2);

        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
        double d = R * c;         // Distance in km

        return(d);
    }
    public double calcularDistancia(PosicionGPS p1, PosicionGPS p2)
    {
        double R    = 6371.0;                              // Radius of the earth in km
        double dLat = (p2.lat - p1.lat) * Math.PI / 180.0; // deg2rad below
        double dLon = (p2.lon - p1.lon) * Math.PI / 180.0;

        double a =
            Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
            Math.Cos(p1.lat * Math.PI / 180.0) * Math.Cos(p2.lat * Math.PI / 180.0) *
            Math.Sin(dLon / 2) * Math.Sin(dLon / 2);

        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
        double d = R * c;         // Distance in km

        return(d);
    }
    IEnumerator Start()
    {
        canvas.SetActive(flag);

        posicionBase = new PosicionGPS(-38.695212, -62.249344);
        //Debug.Log ("pepe");
        // First, check if user has location service enabled
        if (!Input.location.isEnabledByUser)
        {
            yield break;
        }

        // Start service before querying location
        Input.location.Start(1, 0.1f);

        // Wait until service initializes
        int maxWait = 20;

        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
        {
            yield return(new WaitForSeconds(1));

            maxWait--;
        }

        // Service didn't initialize in 20 seconds
        if (maxWait < 1)
        {
            Debug.Log("Timed out");
            yield break;
        }

        // Connection has failed
        if (Input.location.status == LocationServiceStatus.Failed)
        {
            Debug.Log("Unable to determine device location");
            yield break;
        }
        else
        {
            // Access granted and location value could be retrieved
            InvokeRepeating("mostrar", 0, 1);
        }

        // Stop service if there is no need to query location updates continuously
        //Input.location.Stop();
    }
    public void actualizarPosiciones()
    {
        persona.GetComponent <ActualizarPosicionGPS> ().actualizar();
        PosicionGPS posicionBase = persona.GetComponent <PosicionGPS> ();

        //desactivo el menu interacciones nivel 2, luego cada uno lo activa si corresponde
        //GameObject.Find("Menu").GetComponent<MenuManager> ().desactivarMenuInteracciones ();

        for (int i = 0; i < objetos.Length; i++)
        {
            // Obtengo posición gps del objeto
            PosicionGPS posicionTarget = objetos [i].GetComponent <PosicionGPS> ();

            // Creo una posicion auxiliar para luego calcular la distancia en x e y
            PosicionGPS nuevaY = new PosicionGPS(posicionTarget.lat, posicionBase.lon);
            PosicionGPS nuevaX = new PosicionGPS(posicionBase.lat, posicionTarget.lon);
            double      posX   = PosicionGPS.calcularDistancia(posicionBase, nuevaX);
            double      posY   = PosicionGPS.calcularDistancia(posicionBase, nuevaY);

            if (posicionTarget.lat < posicionBase.lat)
            {
                posY *= -1.0;
            }

            if (posicionTarget.lon < posicionBase.lon)
            {
                posX *= -1.0;
            }

            // Asumo que el objeto esta a 2m de altura.
            //TODO ver de modelar la altura en el objeto y preguntarle el mismo.
            objetos[i].transform.position = new Vector3(((float)(posX * 1000)), 0, ((float)(posY * 1000)));

            objetos [i].GetComponent <ControladorObjetoEnElMundo> ().setearDistObs(PosicionGPS.calcularDistancia(posicionBase, posicionTarget) * 1000);
        }
    }