Untitled
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"; } }
Leave a Comment