Chương 4 CÀI ĐẶT VÀ THỬ NGHIỆM

Một phần của tài liệu hỗ trợ phát hiện và thông báo ùn tắc giao thông trên android (Trang 45 - 48)

4.1 Cài đặt

4.1.1 Cài đặt server

Server của hệ thống sử dụng hệ quản trị CSDL MS SQL Express được lập trình trên ngôn ngữ ASP.NET MVC 1.0 và công cụ Visual Studio. Ngoài ra phần Server cũng sử dụng Jquery Javascript Framework7 phiên bản 1.4.2.

Cấu trúc các file quan trọng phần server:

Bảng 4. Các file cài đặt phần server

File Chức năng

/Controllers/CitiesController.cs Lớp điều khiển các thao tác liên quan đến Model City(Thành phố)

/Controllers/DistrictsController.cs Lớp điều khiển các thao tác liên quan đến Model District(Quận/Huyện)

/Controllers/HomeController.cs Lớp điều khiển chính của hệ thống, thao tác Quản lý trạng thái

/Controllers/ReportedStatusController.cs Lớp điều khiển các thao tác thông báo từ Android Client

/Controllers/StatusController.cs Lớp điều khiển các thao tác liên quan đến Status Model

/Controllers/StreetController Lớp điều khiển của Model Street

/Models/TrafficDataContext.cs Lớp thao tác trực tiếp với các Model.

/Models/TrafficDB.dbml Lớp chứa mô hình quan hệ giữa các Model trong

/Views/Shared/Site.Master File Master page, định hình giao diện chung cho cả Web site.

/Scripts/custommap.js File Javascript chức các mã thao tác với bản đồ

Phần quan trọng nhất của chương trình ở server là việc tích hợp chặt chẽ với dịch Google Maps. Đa số các chức năng đều sử dụng bản đồ. Để tạo ra giao diện bản đồ, cần thực hiện các bước như sau:

map = new google.maps.Map2(

document.getElementById("map") );

Chương trình hỗ trợ các thao tác bấm chuột phải trong bản đồ. Hàm bắt sự kiện chuột phải lên màn hình được thực hiện như sau:

GEvent.addDomListener(map, 'singlerightclick', showRightClickMenu(pixel, tile)

);

Sau khi khởi tạo bản đồ. Tùy ứng dụng có thể tùy biến bản đồ cho phù hợp.

Trong phần thêm đường mới, khi thêm tọa độ của con đường, người biên tập bấm chuột phải lên một vùng nào đó trên bản đồ, sau đó tọa độ điểm bấm chuột phải được lưu lại và gán cho tọa độ của đường. Một con đường muốn vẽ ra được trên bản đồ thì cần 2 điểm đầu và cuối.

Tọa độ điểm gán luôn đảm bảo được gắn với một con đường nào đó. Để thực hiện được điều này, cần thực hiện một truy vấn tìm đường với điểm bắt đầu và kết thúc là chính nó. Như vậy, trong dữ liệu trả về từ Google Maps chỉ có một góc rẽ giữa 2 điểm và điểm đó cũng chắc chắn thuộc một con đường gần nhất. Đoạn mã minh họa:

dirForSnap.loadFromWaypoints(

[point.toUrlValue(6), point.toUrlValue(6)], { getPolyline: true }

);

Trong đó, dirForSnap là một đối tượng thuộc lớp GDirection, đã được khai báo bắt sự kiện “load”:

GEvent.addListener(dirForSnap, "load", snapToRouteLoad);

Sau đó, trong hàm snapToRouteLoad bắt sự kiện load của dirForSnap ta có câu lệnh sau để lấy điểm trên con đường gần nhất: (adsbygoogle = window.adsbygoogle || []).push({});

var pointForSnap = dirForSnap.getPolyline().getVertex(0);

Trong phần đặt các điểm trạng thái, để giúp người biên tập hạn chế đặt tọa độ của trạng thái ra ngoài con đường hiện tại, mỗi điểm đặt ra đều được nằm trên đường vẽ mô phỏng đường. Để có được điều này, cần sử dụng thêm một thư viện Javascript là Gmap Utility Library8 . Việc dính biểu tượng vào một đường cụ thể được thực hiện như sau:

snapToRoute = new SnapToRoute( map,

markerStreet, currentPolyline );

Trong đó, markerStreet là đối biểu tượng, currentPolyline là đường vẽ của đường phố đang được chọn.

4.1.2 Cài đặt Client

Client được lập trình trên Eclipse với plugin Android Development Tools (ADT) Cấu trúc các file quan trọng phần Client(Android):

Bảng 4. Các file cài đặt trên Client

File Chức năng

/org.k51.traffic.activities/TrafficMapActivity.java Có chức năng tạo màn hình bản đồ. Lớp

TrafficMapActivity được thừa kế từ lớp MapActivity.

/org.k51.traffic.activities /ControlPanel.java Giữ chức năng quản lý màn hình chính của chương trình

/org.k51.traffic.activities/ListViewActivity.java Giữ chức năng điều kiển màn hình xem theo danh sách

/org.k51.traffic.activities/ReportTrafficActivity.java Giữ chức năng điều khiển màn hình gửi thông báo

/org.k51.traffic.common/TrafficMarkerOverlay.java Dùng để vẽ các biểu tượng của bản đồ.

Khi cài đặt Android Client, việc quan trọng nhất là thực hiện được liên lạc với web server và phân tích được dữ liệu dạng JSON do server trả về. Việc kết nối tới server phải sử dụng một

Thread riêng để không làm treo ứng dụng đang chạy. Thread này sẽ dùng một Handler để thực thi một đối tượng Runnable trong đó gọi hàm cập nhật bản đồ hoặc danh sách.

Sở dĩ kiểu dữ liệu JSON được lựa chọn để truyền thông tin từ server đến client là vì JSON là kiểu dữ liệu được các thư viện trong Android hỗ trợ. Nó cũng là định dạng có thể sinh ra từ dịch vụ Google Maps.

4.2 Thử nghiệm

Chương trình server đã được cài đặt lên máy chủ sử dụng hệ điều hành Windows 7 Ultimate, .NET Framework 3.5. Chương trình client được cài lên điện thoại giả lập trong Android SDK 2.1. Hệ thống đã thực hiện được những gì đề ra trong thiết kế.

Một phần của tài liệu hỗ trợ phát hiện và thông báo ùn tắc giao thông trên android (Trang 45 - 48)