/// <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); }
/// <summary> /// Método encargado de Obtener el Mapa de la Ubicación. (Definiendo un Zoom, marcando una o varias Posiciones en el Mapa) /// </summary> /// <param name="tipoMapa">Tipo de Mapa</param> /// <param name="zoom">Enfoque del Mapa</param> /// <param name="ancho">Ancho del Mapa</param> /// <param name="alto">Alto del Mapa</param> /// <param name="marcador">Marcador (Etiqueta, Color, Latitud, Longitud) del Mapa</param> /// <param name="imagen">Parametro de Imagen de Salida</param> /// <returns></returns> public RetornoOperacion ObtieneMapaUbicacion(TipoMapa tipoMapa, int zoom, int ancho, int alto, MarcadorMapa marcador, out Bitmap imagen) { //Declarando Objeto de Retorno RetornoOperacion result = new RetornoOperacion(); imagen = null; //Si el Zoom es mayor a 0 if (zoom > 0) { //Validando que existan Alto y Ancho if (ancho > 0 && alto > 0) { //Validando Marcador if (marcador.ubicacion != SqlGeography.Null) { //Creando URL de Petición string url_parametros = string.Format("{0}?zoom={1}&size={2}x{3}&maptype={4}&{5}&key={6}", this._url, zoom, ancho, alto, traduceTipoMapa(tipoMapa), convierteMarcadorCadena(marcador), this._key); //Ejecutando Petición Web result = obtieneRespuestaPeticion(url_parametros, out imagen); } else { //Instanciando Excepción result = new RetornoOperacion("Debe de Especificar una Ubicación"); } } else { //Instanciando Excepción result = new RetornoOperacion("Valores de Ancho y Alto Invalidos"); } } else { //Instanciando Excepción result = new RetornoOperacion("Debe de Especificar el Valor Zoom"); } //Devolviendo Resultado Obtenido return(result); }
/// <summary> /// Método encargado de Convertir el Marcador en Cadena para la Petición /// </summary> /// <param name="marcador">Marcador Deseado</param> /// <returns></returns> private string convierteMarcadorCadena(MarcadorMapa marcador) { //Declarando Objeto de Retorno string result = ""; //Validando que exista una Ubicación if (marcador.ubicacion != SqlGeography.Null) { //Validando tipo de Ubicación switch (marcador.ubicacion.STGeometryType().Value) { case "Point": { //Creando Marcador result = string.Format("markers=color:0x{0}%7Clabel:{1}%7C{2},{3}", marcador.color.R.ToString("X2") + marcador.color.G.ToString("X2") + marcador.color.B.ToString("X2"), marcador.etiqueta.ToString().ToUpper().Equals("") ? "A" : marcador.etiqueta.ToString().ToUpper(), marcador.ubicacion.Lat, marcador.ubicacion.Long); break; } case "LineString": case "CompoundCurve": case "Polygon": case "CurvePolygon": { //Obteniendo Conjunto de puntos SqlGeography[] puntos_ubicacion = DatosEspaciales.ObtienePuntosPolygon(marcador.ubicacion, (int)marcador.ubicacion.STSrid.Value, out result); //Validando Resultado Positivo if (result.Equals("")) { //Asignando Atributo Generales result = string.Format("markers=color:0x{0}%7Clabel:{1}", marcador.color.R.ToString("X2") + marcador.color.R.ToString("X2") + marcador.color.R.ToString("X2"), marcador.etiqueta.ToString().ToUpper().Equals("") ? "A" : marcador.etiqueta.ToString().ToUpper()); //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("%7C{0},{1}", punto.Lat, punto.Long); } else { break; } } } else { //Limpiando Retorno result = ""; } break; } } } //Devolviendo Resultado Obtenido return(result); }