lunes, 3 de diciembre de 2012

Añadir marcador dada una dirección - Aportes al Proyecto

Para esta ocasión he trabajado en la tarea de ubicar un marcador en el mapa de google dada una dirección. En el momento que un usuario de nuestro sitio desee hacer una denuncia, el primer requerimiento luego de estar logueado es especificar el lugar físico de la denuncia. Por razones de accesibilidad a los usuarios no podíamos dejar un marcador en el mapa y hacer que esto lo moviese hacia el lugar de la denuncia, hacerlo de esta forma nos hacia tener ubicaciones poco reales y además dejábamos una primera mala impresión para lo usuarios.

Para controlar esto, he agregado un textbox y un botón de tipo HTML por razones de incompatibilidad que tenían los elementos de ASP .Net con las funciones que necesitaba utilizar.



En el primer textbox el usuario introduce una dirección correspondiente a la ubicación geográfica del evento que desea denunciar y luego de presionar el botón buscar, se llama a la siguiente función realizada en JavaScript para obtener desde la dirección, la latitud y longitud para luego crear el marcador. El proceso es el siguiente:


Con esta función primero capturo la dirección desde el textbox y luego uso la función "geocoder" de google. Con esto obtengo la latitud y longitud que son guardadas en un arreglo llamado "results" para luego crear el marcador y ubicarlo dentro del mapa.



La función geocode según el texto buscado hace coincidir la latitud y longitud de un lugar geográfico. Si estos no coinciden dentro de un espacio geográfico, se captura el error y enviamos una advertencia al usuario del sitio:


Referencias:



Marcadores desde una Base de Datos - Aportes al Proyecto

Los problemas de conexión a la base de datos fue caótica, ninguno de los integrantes podía lograr hacer actualizaciones o consultas por lo cual solo se avanzaba en formularios, validación de estos y uso de funcionalidades del mapa de google.

Luego de varios intentos por tratar de conectarnos decidimos comenzar nuevamente con la creación de la base de datos dentro del proyecto. Visual Studio al momento de crear un nuevo proyecto, por defecto nos crea una base de datos la cual está hecha principalmente para controlar funciones como loguín y registro dentro de un proyecto Web Forms de ASP . Net. Esta base de datos nos causaba complicaciones, es por esto que la eliminamos y dejamos solamente la nuestra.

El siguiente paso fue lograr la conexión a la nueva base de datos, esta vez fue mas simple y solo se realizaba con unas pocas lineas de código:


Con la primera línea de código nos simplificamos la vida, el que esté declarada de esa forma nos permite compartir el proyecto entre los integrantes del equipo y no tener problemas de ruta para el acceso a la base de datos, la sentencia se encarga de encontrar el archivo SB.mdf dentro de la carpeta del proyecto y realizar la conexión.

Ahora que ya tenemos lista la conexión, trabajé de a pares con un integrante del equipo para definir el como cargaríamos los eventos nuevos al mapa de google. El consenso fue optar por utilizar una solución propuesta para PHP que consistía en crear un archivo XML a partir de una consulta en la base de datos y luego mediante javascript cargar cada marcador en el mapa.

Con la siguiente sentencia logré crear un XML con los datos de las denuncias registradas en la base de datos:


Primero hacemos la consulta para encontrar la lista de denuncias, luego creamos un objeto de tipo DataSet y luego con "Fill" guardaremos la tabla completa generada por la consulta en este objeto. 

Ahora por razones de manejo a futuro del archivo XML, hemos tenido que trabajar en definir la estructura de este archivo y es por eso que se creó la función "ChangeColumnMapping" que nos da el formato que necesitamos para capturar los eventos nuevos registrados y marcarlos en el mapa.

XML


Eventos cargados al mapa desde el archivo XML


Referencias:


Marcadores en Google Maps - Aportes al Proyecto

Para esta ocasión se ha trabajado de a pares en el manejo de la nueva versión de la API de Google Maps. Esta vez el control  del mapa se realiza con código JavaScript y ha sido dificultoso debido a la poca experiencia de los integrantes del equipo.

Luego de haber podido cargar el mapa de google en nuestra página se nos ha presentado varios problemas. Uno de esto son los marcadores, pues logramos posicionar el mapa en la ciudad de la Serena pero tuvimos éxito para poder dejar más de un marcador en el mapa.


En primera instancia esto es lo que habíamos logrado, posicionar un marcador en un punto específico dado una latitud y longitud. La finalidad de nuestra aplicación es cargar una serie de eventos en el mapa por lo cual la solución momentánea para ubicar más marcadores fue crear una estructura de datos en nuestra página principal (código de ASP .Net) debido a que la conexión a la base de datos nos había traído algunos problemas.

Estructura inicial para escribir mas de un marcador en el mapa:

Una vez declarada la estructura, se pasa a construir los marcadores en el mapa con las siguientes sentencias:


Y el resultado es el siguiente:


Una vez realizada la inserción de más de un marcador, el proceso siguiente será realizarlo desde luego de hacer una consulta a la base de datos de eventos denunciados.

Diagrama de Casos de Uso - Aportes al Proyecto

Para esta semana se ha realizado un diagrama de casos de uso para nuestro proyecto Stamp-Bach, de manera tal que podamos identificar de mejor forma todos los elementos y funciones que nuestra aplicación Web deberá tener al final del semestre.


Hemos identificado tres tipos de usuarios distintos: denunciante, fiscalizador y administrador. En mi caso se me designó detallar dos casos de uso que le corresponden al fiscalizador, estos son informar arreglo y tramitar arreglo.


Esta actividad es realizada por un fiscalizador siempre y cuando se haya realizado antes
la tramitación del mismo arreglo. Ésta se detalla en la siguiente tabla:


En base a la especificación de cada uno de los casos de uso se trabajará en la planificación de las actividades que hará cada integrante del equipo de proyecto durante el desarrollo de la aplicación Web.