//Recibe una cadena y verifica cuales términos corresponden a un lugar
        public List <GeonameNode> ObtenerCiudadesConsulta(string Consulta)
        {
            //Nodos detectados
            List <GeonameNode> geonodes = new List <GeonameNode>();

            //Analizar la consulta para eliminar terminos vacios, puntuaciones, etc.
            Consulta = _LuceneManager.AnalizarConsulta(Consulta, "Sin Analizador");

            //Separar la consulta en palabras sueltas
            string[] terminos = ObtenerTerminos(Consulta);

            //Probar en geonames si se encuentra el lugar
            for (int i = 0; i < terminos.Length; i++)
            {
                List <GeonameNode> geontemp = new List <GeonameNode>();

                //Sacamos todas las posibles localizaciones del termino buscando el nombre identico
                GeoNamesManager geoName = new GeoNamesManager();
                geontemp = geoName.GeoNames_SearchByNameEquals(terminos[i]);

                //Si encontro localizaciones entonces obtener la primera opcion, sino no lo adiciona
                foreach (GeonameNode gnitem in geontemp)
                {
                    geonodes.Add(gnitem);
                    break;
                }
            }
            return(geonodes);
        }
        //Obtiene un lista con todas las ubicaciones de un lugar.
        //Busca cualquier coincidencia del lugar asi este al principio, medio o fin dle nombre real del lugar
        public List <GeonameNode> ObtenerLocalizaciones(string lugar)
        {
            //JavaScriptSerializer serializador = new JavaScriptSerializer();
            List <GeonameNode> geonodes = new List <GeonameNode>();

            GeoNamesManager geoName = new GeoNamesManager();

            geonodes = geoName.GeoNames_SearchByName(lugar);

            return(geonodes);
            //return serializador.Serialize(geonodes);
        }
        public double VerificarSensorenLugar(double latitud, double longitud, double LatSensor, double LonSensor, double radio)
        {
            GeoNamesManager geoName = new GeoNamesManager();

            return(geoName.VerificarSensorenLugar(latitud, longitud, LatSensor, LonSensor, radio, DistanceType.Kilometers));
        }
        public List <GeonameNode> GeoNames_Hierarchy(int GeonameId)
        {
            GeoNamesManager geoName = new GeoNamesManager();

            return(geoName.GeoNames_Hierarchy(GeonameId));
        }
        public List <GeonameNode> ObtenerLugardeCoordenadasJerarquia(string latitud, string longitud)
        {
            GeoNamesManager geoName = new GeoNamesManager();

            return(geoName.GeoNames_ExtendedFindNearby(latitud, longitud));
        }
        //Recibe coordenadas de Latitutd y longitud y retorna el lugar más cercano
        public GeonameNode ObtenerLugardeCoordenadas(string latitud, string longitud)
        {
            GeoNamesManager geoName = new GeoNamesManager();

            return(geoName.GeoNames_FindNearbyPlaceName(latitud, longitud));
        }