Untitled
Anonymous
csharp
01/19/2025 8:10 PM
2.9 KB
22
Indexable
using UnityEngine;
using System.Collections;
public class LocationManager : MonoBehaviour
{
void Start()
{
StartCoroutine(GetLocation());
}
IEnumerator GetLocation()
{
// Verifica si el dispositivo tiene habilitado el GPS
if (!Input.location.isEnabledByUser)
{
Debug.Log("El GPS está deshabilitado en el dispositivo.");
yield break;
}
// Comienza el servicio de ubicación
Input.location.Start();
// Espera hasta que el servicio esté inicializado
int maxWait = 20;
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
{
yield return new WaitForSeconds(1);
maxWait--;
}
// Si se agotó el tiempo de espera
if (maxWait <= 0)
{
Debug.Log("Tiempo de espera excedido para la inicialización del GPS.");
yield break;
}
// Si hay un error en el servicio
if (Input.location.status == LocationServiceStatus.Failed)
{
Debug.Log("No se pudo determinar la ubicación del dispositivo.");
yield break;
}
// Obtener latitud y longitud
float latitude = Input.location.lastData.latitude;
float longitude = Input.location.lastData.longitude;
Debug.Log($"Ubicación detectada: Latitud: {latitude}, Longitud: {longitude}");
// Mapea las coordenadas a una región
string region = MapCoordinatesToRegion(latitude, longitude);
Debug.Log($"Región detectada: {region}");
// Detén el servicio de ubicación para ahorrar batería
Input.location.Stop();
}
string MapCoordinatesToRegion(float latitude, float longitude)
{
// Aquí mapea las coordenadas a regiones específicas
// Este es un ejemplo básico para Chile:
if (latitude >= -19.9187 && latitude <= -17.5000) return "Arica y Parinacota";
if (latitude > -21.0000 && latitude <= -19.9187) return "Tarapacá";
if (latitude > -25.0000 && latitude <= -21.0000) return "Antofagasta";
// Agrega más rangos según tu necesidad...
return "Región no identificada";
}
}
Editor is loading...
Leave a Comment