Ejemplo n.º 1
0
        /// <summary>
        /// Método encargado de Obtener el Mapa de la Ubicación (Dando un Origen, un Destino y el Centro del Destino).
        /// </summary>
        /// <param name="tipoMapa">Tipo de Mapa</param>
        /// <param name="ancho">Ancho del Mapa</param>
        /// <param name="alto">Alto del Mapa</param>
        /// <param name="marcador">Marcador Origen (Etiqueta, Color, Latitud, Longitud) del Mapa</param>
        /// <param name="ubicacion_destino">Poligono Destino (Color, Color Relleno, Tamano, Ubicación y Etiqueta) del Mapa</param>
        /// <param name="centro_destino">Definiendo el Centro del Mapa</param>
        /// <param name="imagen">Parametro de Imagen de Salida</param>
        /// <returns></returns>
        public RetornoOperacion ObtieneMapaUbicacion(TipoMapa tipoMapa, int ancho, int alto, MarcadorMapa marcador_origen,
                                                     PoligonoMapa ubicacion_destino, MarcadorMapa centro_destino, out Bitmap imagen)
        {
            //Declarando Objeto de Retorno
            RetornoOperacion result         = new RetornoOperacion();
            string           url_parametros = "";

            imagen = null;

            //Validando que existan Alto y Ancho
            if (ancho > 0 && alto > 0)
            {
                //Validando que exista la Ubicación de Destino
                if (ubicacion_destino.ubicacion != SqlGeography.Null)
                {
                    //Creando URL de Petición
                    url_parametros = string.Format("{0}?size={1}x{2}&maptype={3}&{4}&{5}&{6}&key={7}",
                                                   this._url, ancho, alto, traduceTipoMapa(tipoMapa),
                                                   convierteMarcadorCadena(marcador_origen),
                                                   conviertePoligonoCadena(ubicacion_destino),
                                                   convierteMarcadorCadena(centro_destino),
                                                   this._key);

                    //Ejecutando Petición Web
                    result = obtieneRespuestaPeticion(url_parametros, out imagen);
                }
                else
                {
                    //Instanciando Excepción
                    result = new RetornoOperacion("Debe especificar un Destino");
                }
            }
            else
            {
                //Instanciando Excepción
                result = new RetornoOperacion("Valores de Ancho y Alto Invalidos");
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Método encargado de Convertir un Objeto Poligono en Cadena para la Petición
        /// </summary>
        /// <param name="poligono">Poligono Deseado</param>
        /// <returns></returns>
        private string conviertePoligonoCadena(PoligonoMapa poligono)
        {
            //Declarando Objeto de Retorno
            string result = "";

            //Validando que exista una Ubicación
            if (poligono.ubicacion != SqlGeography.Null)
            {
                //Validando tipo de Ubicación
                switch (poligono.ubicacion.STGeometryType().Value)
                {
                case "Point":
                {
                    //Creando Marcador
                    result = string.Format("markers=color:0x{0}%7Clabel:{1}%7C{2},{3}",
                                           poligono.color.R.ToString("X2") + poligono.color.G.ToString("X2") + poligono.color.B.ToString("X2"),
                                           poligono.etiqueta.ToString().Equals("") ? "D" : poligono.etiqueta.ToString().ToUpper(),
                                           poligono.ubicacion.Lat, poligono.ubicacion.Long);
                    break;
                }

                case "LineString":
                case "CompoundCurve":
                case "Polygon":
                case "CurvePolygon":
                {
                    //Obteniendo Conjunto de puntos
                    SqlGeography[] puntos_ubicacion = DatosEspaciales.ObtienePuntosPolygon(poligono.ubicacion, (int)poligono.ubicacion.STSrid.Value, out result);

                    //Validando Resultado Positivo
                    if (result.Equals(""))
                    {
                        //Asignando Atributo Generales
                        result = string.Format("path=color:0x{0}|weight:{1}|fillcolor:0x{2}",
                                               poligono.color.R.ToString("X2") + poligono.color.G.ToString("X2") + poligono.color.B.ToString("X2"),
                                               poligono.tamano,
                                               poligono.color_relleno.R.ToString("X2") + poligono.color_relleno.G.ToString("X2") + poligono.color_relleno.B.ToString("X2"));

                        //Recorriendo Puntos
                        foreach (SqlGeography punto in puntos_ubicacion)
                        {
                            //Validando que sea de Tipo Punto
                            if (punto.STGeometryType().Value.Equals("Point"))
                            {
                                //Asignando Ubicación en Punto
                                result += string.Format("|{0},{1}", punto.Lat, punto.Long);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        //Limpiando Retorno
                        result = "";
                    }

                    break;
                }
                }
            }

            //Devolviendo Resultado Obtenido
            return(result);
        }