2008-09-17 19 views
13

Estoy pensando en hacer un simple control de mapa en WPF, y estoy pensando en el diseño de la interfaz básica del mapa y me pregunto si alguien tiene algún buen consejo para esto.Diseñando un control de mapa WPF

Lo que estoy pensando es utilizar un ScrollViewer (sin barras de desplazamiento) como mi "puerto de visualización" y luego apilar todo en la parte superior de un lienzo. Desde Índice Z = 0, yo estoy pensando: Lona

  1. base para los cálculos de longitud/latitud, posicionamiento de control, Z-Índice de apilamiento.
  2. Elementos de cuadrícula múltiple para representar los mapas en diferentes niveles de zoom. Usar una rejilla para facilitar el embaldosado.
  3. Asignar objetos con datos de posición.
  4. Controles del mapa (control deslizante del zoom, vista general, etc.).
  5. Visor de desplazamiento con eventos de movimiento del mouse para realizar panorámicas y zoom.

¿Alguna sugerencia de comentarios sobre cómo debería estar construyendo esto?

Respuesta

0

La pregunta principal es cómo almacenar y acceder a los elementos que va a colocar en el mapa (suponiendo que esto no sea solo una visualización de imagen). Lookgraph scenegraph para algunas ideas.

Además, si quieres que sea más que un visor de imágenes juguete del lat largo de XY escalado puede conseguir 'interesante'

1

su deseo de crear una herramienta WPF mapeo es similar a la mía, que me llevan a preguntar this question sobre DeepZoom (también conocido como MultiScaleImage) de Silverlight. Quiero una versión de WPF. La respuesta aceptada proporciona un enlace a un muy buen punto de partida (similar al proceso de pensamiento descrito).

8

Si está buscando un buen comienzo, puede usar la base del código suministrado por el proyecto SharpMap y construir desde allí. Si recuerdo que había algunas personas que ya trabajaban en un procesador WPF para SharpMap, entonces, para empezar, también podrían tener algún código.

He utilizado personalmente SharpMap en una aplicación C# 2.0 que combina datos GIS con datos de GPS en tiempo real, y fue un gran éxito. SharpMap me proporcionó la suite de transformación para manejar los datos GIS, junto con la base matemática para trabajar con la alteración de la información GIS. Debería ser relativamente sencillo utilizar el código de no representación con un frontend de WPF, ya que tienen una presentación separada de los datos.

(EDIT: añadido más detalles acerca de cómo solía SharpMap)

+1

Eché un vistazo a SharpMap, pero desafortunadamente todavía no está listo para la producción de nuestra implementación. No fue posible cargar algunos archivos ESRI Shape, que es algo que utilizamos bastante. – Dylan

1

Virtual Earth tiene algo a favor a WPF

+0

Lamentablemente, eso no funcionará para mí porque usa un servidor web incorporado, y necesito que esto funcione en un XBAP en confianza parcial. Lo cual, a menos que lo esté construyendo mal, no funcionará. – Dylan

5

Es probablemente una manera indirecta de hacer las cosas, pero es posible encontrar alguna utilidad cosas en el javascript y XAML desde SilverlightEarth.com que un mapa de Silverlight 1.0-tile-client. Puede cargar VE, Google, Yahoo (hay un DeepZoom version que puede cargar OpenStreetMap, Moon y Mars también, pero dado que usa MSI, realmente no ayuda en el frente WPF 3/3.5).

Aunque el javascript es un poco desordenado, puede ver claramente que está creando un lienzo Silverlight 1.0 Xaml (tamaño dinámico), rellenándolo con mosaicos (controles de imagen) y manejando acercar/alejar y realizar paneos. Tendría que tener sentido de todos los javascript y convertirlo a C# - el XAML debería ir a WPF sin modificaciones.Tengo tested this Silverlight 1.0 with a Deep Zoom tile pyramid (y here) por lo que los conceptos son aplicables (es decir, no solo para mapas).

Sé que esto funciona porque lo he hecho yo mismo para construir el visor de mapas en Geoquery2008.com (screenshot) que es WPF/C#. Desafortunadamente, los ensamblajes de Geoquery2008 están ofuscados, pero aún puede obtener algunas ideas o códigos útiles a través de DASM/Reflector. Todavía es una versión beta, por lo que no afirmaría que esté 100% listo. Realmente no había pensado en factorizar el código del mapa en un control separado, pero puedo ver si no aparece otro ...

Incidentalmente también comencé con el ScrollViewer, pero estoy planeando Ábrelo e imita el javascript más de cerca para que sea más fácil reutilizar los objetos de la imagen al hacer un barrido/acercamiento (obteniendo más control sobre el proceso del que proporciona ScrollViewer).

Estas páginas de MSDN en el Virtual Earth tile system y el Deep Zoom file format y enlaces relacionados es probablemente también una referencia útil.

Finalmente, creo que has visto desde esta publicación que DeepZoom/MultiScaleImage es probable que esté en .NET 4.0/Studio 2010.

1

No sé si utiliza el software ESRI, pero escuché que desarrolla una API de Silverlight para su pila, por lo que es posible que desee suspenderlo.

0

la Bing Maps Windows Presentation Foundation Control v1 es mejor control del mapa en WPF .

Compatibilidad con capas de teselas: ahora puede superponer sus propias capas de teselas sobre el control del mapa.
Desactivar la capa de mosaico base: esto es útil para cuando no necesite/desee utilizar las teselas de nuestro mapa base y preferiría usar la suya propia sin superponerlas encima de la nuestra. El control no solicitará las teselas lo que reduce las descargas y mejora el rendimiento del renderizado.
Soporte SSL: dado que muchos de ustedes están usando el control WPF en aplicaciones seguras, ahora pueden realizar solicitudes de mosaico y servicio a través de SSL sin problemas.
Ocultar la barra de escala: si no desea una barra de escala (tal vez su mapa es pequeño y la barra de escala desordena el mapa) puede desactivarlo. De hecho, los únicos elementos que no puede desactivar son el logotipo de Bing y los derechos de autor.
Nuevo servicio de copyright: proporciona derechos de autor precisos para nuestros proveedores de datos. Inercia adicional: la inercia ahora está habilitada para el mouse y está activada de manera predeterminada para el tacto.
Correcciones de errores varios: gracias por los comentarios en los foros de MSDN, el blog de Bing Maps, el correo electrónico y Twitter. El bien encuentra a la gente.