Cài đặt server

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 55 - 57)

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.1 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") );

7

46 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:

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 ); 8 http://code.google.com/p/gmaps-utility-library/

47 Trong đó, markerStreet là đối biểu tƣợng, currentPolyline là đƣờng vẽ của

đƣờng phố đang đƣợc chọn.

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 55 - 57)

Tải bản đầy đủ (PDF)

(59 trang)