Hiển thị trực quan ứng dụng tùy chỉnh
Xây dựng một ứng dụng JViews Maps tùy chỉnh
Ứng dụng trình duyệt địa lý được sử dụng trong hướng dẫn này dựa vào ứng dụng mẫu mapbuilder của JViews Maps. Sự khác biệt chính là sự hỗ trợ cho một số lượng giới hạn các kiểu nguồn dữ liệu (DB2, Informix, shapefile) và khả năng Options > Refresh All. Khả năng Refresh All (Làm mới tất cả) hữu ích để nạp lại màn hình hiển thị bản đồ từ các nội dung của bảng cơ sở dữ liệu hiện tại khi một ứng dụng khác có thể thực hiện các thay đổi với bảng này.
Mẫu mapbuilder là một ứng dụng Java tích hợp nhiều thành phần JViews Maps thành một ứng dụng người dùng cuối trọn vẹn. Bạn có thể sửa đổi ứng dụng này để bao gồm chỉ các khả năng mà bạn cần và thêm chức năng tùy chỉnh riêng của bạn. Hoặc bạn có thể bắt đầu từ đầu để xây dựng một ứng dụng dựa trên các thành phần của JViews Maps.
Tải bản sao dùng thử của JViews Maps (xem phần Tài nguyên). Để triển khai ứng dụng riêng của bạn, bạn sẽ cần nhận được một giấy phép thường xuyên cho JViews Maps.
Các ký hiệu động với JViews Designer
JViews Maps cũng bao gồm các thành phần của JViews Designer (Nhà thiết kế Jviews), cho phép sử dụng các ký hiệu một cách động và tinh vi hơn là bộ ký hiệu bản đồ do JViews Maps cung cấp. Bạn có thể thay đổi kích thước, màu sắc, hoặc biểu tượng của các ký hiệu dựa trên các giá trị thuộc tính.
Khi bạn cài đặt JViews Maps, một mẫu mà bạn có thể chạy ngay lập tức là loaddiag, trong đó cho thấy các xe với các kiểu khác nhau đang chạy trên một bản đồ Hoa Kỳ. Mẫu này sử dụng một nguồn dữ liệu XML và mã Java để mô phỏng sự chuyển động của xe.
Ngoài ra có thể sử dụng một nguồn dữ liệu JDBC của DB2 kết nối với một bảng không gian DB2. Một ví dụ dựa trên cơ sở dữ liệu và dữ liệu này mà chúng ta đã sử dụng trong các phần trước được hiển thị trong hình sau, mỗi văn phòng được biểu diễn bằng một vòng tròn có kích thước dựa trên số lượng nhân viên trong bảng OFFICES.
Hình 8. Bản đồ sử dụng JViews Designer với các ký hiệu thay đổi được
Mã mẫu để thực hiện việc này có sẵn trong phần Tải về. Giải nén nó vào thư mục samples của JViews Maps.
Cách tiếp cận chung đến ứng dụng hiển thị trực quan JViews là để giảm thiểu các yêu cầu mã hóa thực tế và sử dụng một cách tiếp cận mô tả cho các nội dung và hiển thị trực quan. Mỗi tệp quan trọng có liên quan được mô tả dưới đây.
Đây là một ứng dụng Java AWT đơn giản để xây dựng Giao diện đồ họa người dùng, sử dụng các thành phần JViews Maps cho thanh công cụ và vùng bản đồ. Việc nạp tệp dw-demo1.idpr bắt đầu quá trình hiển thị trực quan. Mã này khá đơn giản.
Tệp này quy định kiểu dáng được áp dụng, thông tin kết nối cơ sở dữ liệu, truy vấn để nhận được các cột sẽ dùng trong ứng dụng và ánh xạ các tên cột cơ sở dữ liệu với các tên thuộc tính mà bản định kiểu sử dụng.
JViews chờ đợi thông tin vị trí được cung cấp trong các thuộc tính có
tên là latitude (vĩ độ) và longitude (kinh độ). Dẫn
xuất ra các giá trị này phức tạp hơn bình thường một chút. JViews làm
việc với các tọa độ được biểu diễn bằng radian chứ không sử dụng giá
trị bằng độ, vì vậy chúng ta cần biểu thức
* 3.14159 / 180.0 để chuyển đổi từ độ sang
radian.
Các tọa độ trong cột LOCATION thực tế được lưu trữ
bằng cách sử dụng hệ thống tọa độ phẳng quốc gia
thường dùng cho các ứng dụng lập bản đồ có độ chính xác cao và đơn vị
là phít ( “feed” - đơn vị đo chiều dài Anh). Chúng ta sử dụng hàm
st_transform(1) của DB2 Spatial Extender để
chuyển đổi từ phít sang độ trong hệ thống tọa độ thường dùng với dữ
liệu Bắc Mỹ.
<diagrammer style="dw-demo1.css">
<datasource class="ilog.views.diagrammer.datasource.IlvJDBCDataSource">
<connection id="basic"
url="jdbc:db2://localhost:50000/sample"
user="davea5"
passwd="my_password"
driver="com.ibm.db2.jcc.DB2Driver"/>
<query connection="basic"
value="SELECT id, name, employees,
location..st_transform(1)..st_miny * 3.14159 / 180.0 as latitude,
location..st_transform(1)..st_minx * 3.14159 / 180.0 as longitude
FROM davea5.offices
where location is not null"
tag="node"
links="false">
<map columns="ID" property="id"/>
<map columns="LATITUDE" property="latitude"/>
<map columns="LONGITUDE" property="longitude"/>
<map columns="NAME" property="name"/>
<map columns="EMPLOYEES" property="employees"/>
</query>
</datasource>
</diagrammer>
|
Tệp này quy định bản đồ nền thường dùng và kiểu dáng của các nút (node) được trả về từ truy vấn trong tệp dw-demo1.idpr. Phần Map (Bản đồ) tham khảo bản đồ cụ thể được sử dụng, đó là dw-demo1.ivl.
Map {
_rule_name : "Background Map" ;
autoRegionOfInterest : "true" ;
map : "url(dw-demo1.ivl)" ;
regionOfInterest : "" ;
regionOfInterestMargin : "5.0" ;
}
|
Bạn cần thay thế tên tệp dw-demo1.ivl bằng tên của tệp bản đồ mà bạn tạo ra trong trình duyệt địa lý.
Trong phần node (nút),
name : "@name" chỉ rõ rằng thuộc tính
name được sử dụng cho giá trị tên được hiển
thị cùng với ký hiệu trên bản đồ.
class :
"@|symbolResource(ilog/views/palettes/shared/symbols/SizedRound.css,Symbol)"
chỉ rõ bảng ký hiệu được sử dụng và ký hiệu cụ thể là:
SizedRound.
size : "@employees" chỉ rõ rằng thuộc tính
employees (các nhân viên) cần được sử dụng
để điều khiển kích thước của ký hiệu.
node {
Layer : "20" ;
Interactor : "ilog.views.sdm.IlvSDMCompositeInteractor" ;
fill : "false" ;
name : "@name" ;
class : "@|symbolResource(ilog/views/palettes/shared/symbols/SizedRound.css,Symbol)" ;
size : "@employees" ;
}
|
Đây là tệp bản đồ được trình duyệt địa lý tạo ra. Bạn cần thay thế nó bằng tệp bạn đã tạo ra.
