Utilizando el tipo Geography con Virtual Earth Parte 2
Para esta segunda entrega mostrare como se pueden almacenar y cargar puntos geoespaciales utilizando Virtual Earth con SQL Server 2008 por esta razón es importante que visites Utilizando el tipo Geography con Virtual Earth Parte 1 y Trasfiriendo tipos personalizados desde el servidor al cliente con AJAX.
Como primer paso he creado dos clases marcadas con el atributo serializable con la finalidad de enviar desde el servidor al cliente un arreglo de tipo Pin que contiene la posición y el nombre del punto que deberá ser cargado sobre el control VEMap.
Para poder transferir datos desde alguna base de datos al cliente es necesaria la implementación de WebServices para esto recomiendo visitar http://www.frameworkla.net/AJAX.aspx en donde podrán encontrar información al respecto. El WebServices que se muestra a continuación tiene implementado dos WebMethod el primero para Agregar nuevos registros a la tabla y el segundo para retornar lista genérica de tipo Pin al navegador para que sean cargados en el control VEMap de Virtual Earth.
Para este ejemplo estoy utilizando el formato WKT por el cual el ingreso de los puntos tiene el siguiente formato POINT(X Y Z M) en donde X = Latitud, Y = Longitud, Z = Elevacion y M = Medida. Z y M son parámetros opcionales.
Aunque las posiciones son almacenadas como tipo Geography son retornadas como string debido a que el diseñador de clases ni los DataSet tipados soportan este tipo. Por esta razón para utilizar los procedimientos almacenados con LINQ he realizado algunas conversiones desde los procedimientos almacenados como se muestra en la primera parte de este post. Por este motivo el procedimiento Get_Posicion() me retorna como tipo string con el formato WKT la posición de los puntos almacenados.
Para extraer la latitud y longitud o los parámetros opcionales utilizo el método compartido SQLGeography.Parse() que retorna un tipo SQLGeography. Este tipo proporciona las propiedades Lat y Long.
C#
A continuación encontraras un sencillo ejemplo de cómo enviar las coordenadas al WebService para que sean almacenadas y como cargar las coordenadas almacenadas sobre el control VEMap para más información sobre Virtual Earth puedes visitar http://www.frameworkla.net/Live.aspx
Resultado Final: