2008-09-17 43 views
13

Tôi đang nghĩ đến việc tạo một điều khiển bản đồ đơn giản trong WPF, và đang nghĩ về thiết kế giao diện bản đồ cơ bản và tôi tự hỏi liệu có ai có lời khuyên tốt cho điều này không.Thiết kế điều khiển bản đồ WPF

Điều tôi đang nghĩ đến là sử dụng ScrollViewer (thanh cuộn sans) làm "cổng xem" của tôi và sau đó xếp mọi thứ lên trên cùng của canvas. Từ Z-Index = 0 lên, tôi đang nghĩ:

  1. Tính cơ sở cho tính toán lat/long, định vị điều khiển, xếp chồng Z-Index.
  2. Nhiều yếu tố lưới để thể hiện bản đồ ở các mức thu phóng khác nhau. Sử dụng lưới để làm cho ốp lát dễ dàng hơn.
  3. Ánh xạ đối tượng với dữ liệu vị trí.
  4. Điều khiển bản đồ (thanh trượt thu phóng, tổng quan, v.v ...).
  5. Cuộn trình xem bằng các sự kiện di chuyển chuột để di chuyển và thu phóng.

Bất kỳ nhận xét nào đề xuất về cách tôi nên tạo điều này?

Trả lời

0

Câu hỏi chính là cách bạn lưu trữ và truy cập các mục bạn sắp đưa vào bản đồ (giả sử đây không chỉ là hiển thị hình ảnh). Tra cứu scenegraph cho một số ý tưởng.

Ngoài ra nếu bạn muốn nó được hơn một trình xem ảnh đồ chơi lat dài để XY rộng có thể nhận được 'thú vị'

1

mong muốn của bạn để tạo ra một công cụ bản đồ WPF là tương tự như tôi, dẫn tôi để hỏi this question về DeepZoom (aka MultiScaleImage) từ Silverlight. Tôi muốn có một phiên bản WPF. Câu trả lời được chấp nhận cung cấp một liên kết đến một điểm khởi đầu rất tốt (tương tự như quy trình suy nghĩ được mô tả của bạn).

8

Nếu bạn đang tìm kiếm một khởi đầu tốt, bạn có thể sử dụng nền tảng mã được cung cấp bởi dự án SharpMap và xây dựng từ đó. Nếu tôi nhớ lại có một vài người đã làm việc trên trình kết xuất WPF cho SharpMap, vì vậy bạn cũng có thể có một số mã để bắt đầu.

Cá nhân tôi đã sử dụng SharpMap trong ứng dụng C# 2.0 kết hợp dữ liệu GIS với dữ liệu GPS thời gian thực và rất thành công. SharpMap cung cấp cho tôi bộ chuyển đổi để xử lý dữ liệu GIS, cùng với nền tảng toán học để làm việc với việc thay đổi thông tin GIS. Nó nên được tương đối đơn giản để sử dụng mã không dựng hình với một lối vào WPF, vì họ đã có trình bày tách ra từ dữ liệu.

(EDIT: thêm thêm chi tiết về làm thế nào tôi sử dụng SharpMap)

+1

Tôi đã xem SharpMap, nhưng tiếc là nó chưa sẵn sàng để sản xuất cho triển khai của chúng tôi. Nó không thể tải một số tệp hình dạng ESRI, đó là một cái gì đó chúng tôi sử dụng khá nhiều. – Dylan

1

Virtual Earth có một cái gì đó ủng hộ để WPF

+0

Thật không may là nó sẽ không hiệu quả với tôi vì nó sử dụng một máy chủ web nhúng và tôi cần điều này để làm việc trong một XBAP một phần tin tưởng. Trong đó, trừ khi tôi xây dựng nó sai, sẽ không hoạt động. – Dylan

5

Nó có lẽ là một cách vòng xoay đi về nó, nhưng bạn có thể tìm thấy một số hữu ích nội dung trong javascript và XAML từ SilverlightEarth.com mà một ứng dụng khách bản đồ dựa trên Silverlight 1.0. Nó có thể tải VE, Google, Yahoo (có một DeepZoom version có thể tải OpenStreetMap, Mặt trăng và sao Hỏa quá, nhưng vì nó sử dụng MSI nó không thực sự giúp đỡ trên WPF 3/3.5 phía trước).

Mặc dù javascript hơi lộn xộn, nhưng bạn có thể thấy rõ rằng nó đang tạo Canvas Silverlight 1.0 Xaml (có kích thước động), tô nó bằng các lát (Điều khiển hình ảnh) và xử lý các yêu cầu phóng to/thu nhỏ. Bạn sẽ cần phải làm cho tinh thần của tất cả các javascript và chuyển nó sang C# - XAML chủ yếu nên đi vào WPF không thay đổi gì.Tôi có tested this Silverlight 1.0 with a Deep Zoom tile pyramid (và here) để các khái niệm được áp dụng (ví dụ: không chỉ cho bản đồ).

Tôi biết điều này có hiệu quả vì tôi đã tự làm để xây dựng trình xem bản đồ ở số Geoquery2008.com (screenshot) là WPF/C#. Thật không may, các hội đồng Geoquery2008 bị làm xáo trộn, nhưng bạn vẫn có thể thu thập một số ý tưởng hoặc mã hữu ích thông qua DASM/Reflector. Nó vẫn là một phiên bản beta vì vậy tôi sẽ không yêu cầu nó được thực hiện 100%. Tôi đã không thực sự nghĩ rằng bao thanh toán ra các mã bản đồ vào một điều khiển riêng biệt nhưng tôi có thể sẽ xem xét rằng nếu một số khác không xuất hiện ...

Ngẫu nhiên tôi cũng bắt đầu với ScrollViewer, nhưng tôi đang lên kế hoạch mương nó và bắt chước javascript chặt chẽ hơn vì vậy nó dễ dàng hơn để tái sử dụng các đối tượng hình ảnh khi panning/phóng to (bằng cách đạt được kiểm soát nhiều hơn quá trình hơn ScrollViewer cung cấp).

Các trang MSDN này trên Virtual Earth tile systemDeep Zoom file format và các liên kết có liên quan cũng có thể là tham chiếu hữu ích.

Cuối cùng - tôi đoán bạn đã thấy kể từ bài đăng này mà DeepZoom/MultiScaleImage có thể nằm trong số .NET 4.0/Studio 2010.

1

Không biết bạn có sử dụng phần mềm ESRI hay không, nhưng tôi nghe có phát triển API Silverlight để có ngăn xếp để bạn có thể muốn giữ.

1

Nó không rơi vào lĩnh vực công việc của tôi chút nào, nhưng bạn có thể xem MapWindow GIS, trong đó có đối tượng ActiveX nguồn mở cung cấp nhiều tính năng lập bản đồ và GIS. Đây là một bài giải thích làm thế nào để nhúng nó vào các ứng dụng WPF:

http://www.mapwindow.org/phorum/read.php?13,13484

0

các Bing Maps Windows Presentation Foundation Control v1 là kiểm soát bản đồ tốt nhất trong WPF .

Hỗ trợ cho các lớp xếp kề - giờ đây bạn có thể phủ lớp của riêng bạn lên trên điều khiển bản đồ.
Tắt lớp gạch nền - điều này rất hữu ích khi bạn không cần/muốn sử dụng các ô bản đồ cơ sở của chúng tôi và thay vào đó sẽ thích sử dụng riêng của bạn mà không cần phủ chúng lên trên điều khiển của chúng tôi. làm giảm tải xuống và cải thiện hiệu suất hiển thị.
Hỗ trợ SSL - vì nhiều người trong số các bạn đang sử dụng điều khiển WPF trong các ứng dụng bảo mật, giờ đây bạn có thể thực hiện yêu cầu dịch vụ và xếp kề qua SSL mà không gặp sự cố.
Ẩn thanh tỷ lệ - nếu bạn không muốn thanh tỷ lệ (có thể bản đồ của bạn nhỏ và thanh tỷ lệ cắt bản đồ), bạn có thể tắt thanh này. Trên thực tế, các yếu tố duy nhất bạn không thể tắt là biểu trưng Bing và bản quyền.
Dịch vụ bản quyền mới - cung cấp bản quyền chính xác cho các nhà cung cấp dữ liệu của chúng tôi. Quán tính bổ sung - quán tính hiện được kích hoạt cho chuột và được bật theo mặc định để liên lạc.
Sửa lỗi khác - cảm ơn phản hồi về Diễn đàn MSDN, Blog Bản đồ Bing, e-mail và Twitter. Tốt tìm mọi người.

Các vấn đề liên quan