Làm chủ Grails: Các dịch vụ Grails và bản đồ Google

39 11 0
Làm chủ Grails: Các dịch vụ Grails và bản đồ Google

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hòa trộn công nghệ bên ngoài vào trong một ứng dụng Grails Scott Davis , Tổng Biên tập, AboutGroovy.com Tóm tắt: Scott Davis cho bạn biết làm cách nào bạn có thể nhúng các bản đồ vào một ứng dụng Grails sử dụng những dịch vụ Web và APIs sẵn có miễn phí trong bộ cài đặt mới nhất này của Làm chủ Grails. Ông sử dụng ứng dụng mẫu lập kế hoạch-chuyến đi từ những cài đặt trước và đưa nó tới mức tiếp theo bằng mã địa lí, Các bản đồ Google, và những dịch vụ Grails....

Làm chủ Grails: Các dịch vụ Grails đồ Google Hịa trộn cơng nghệ bên ngồi vào ứng dụng Grails Scott Davis , Tổng Biên tập, AboutGroovy.com Tóm tắt: Scott Davis cho bạn biết làm cách bạn nhúng đồ vào ứng dụng Grails sử dụng dịch vụ Web APIs sẵn có miễn phí cài đặt Làm chủ Grails Ông sử dụng ứng dụng mẫu lập kế hoạch-chuyến từ cài đặt trước đưa tới mức mã địa lí, Các đồ Google, dịch vụ Grails Tôi xây dựng ứng dụng lập kế hoạch-chuyến từ viết loạt Giờ khung làm việc Người điều khiển-Khung nhìn-Mơ hình (ModelView-Controller (MVC)) đây, ta sẵn sàng để hịa trộn với kĩ thuật bên ngồi Cụ thể, ta thêm đồ Tơi nói, "Tơi đặt chuyến từ Denver tới Raleigh, với điểm dừng San Jose Seattle dọc đường đi," đồ giúp mô tả chuyến tốt Bạn biết Seattle Raleigh phía đối diện nước Mỹ, đồ giúp bạn hình dung khoảng cách hai thành phố Cho bạn ý tưởng ban đầu ứng dụng làm phần cuối viết này, vào trang http://maps.google.com nhập mã IATA DEN hộp tìm kiếm Bạn nên kết thúc Sân bay Quốc tế Denver, biểu diễn Hình (Biết thêm mã IATA, xem viết tháng trước.) Hình Sân bay Denver, nhờ Các đồ Google Bên cạnh việc hiển thị sân bay Mỹ bạn tạo bảng HTML, lập kế hoạchchuyến vẽ sân bay đồ Tôi sử dụng API Các đồ Google miễn phí viết Bạn sử dụng API Các đồ Yahoo! miễn phí khác (xem Tài nguyên) Một bạn hiểu điều đồ Web trực tuyến, bạn hiểu API khác hốn đổi cho cách hợp lí Trước bạn ánh xạ phần giải pháp, bạn cần hiểu làm để chuỗi ba kí tự đơn giản DEN biến đổi thành điểm đồ Mã địa lí Khi bạn nhập DEN vào Các đồ Google, ứng dụng thực phép biến đổi nhỏ đằng sau Bạn nghĩ tới địa phương mặt địa đường phố Đường 123 Main, đồ Google cần điểm vĩ độ/kinh độ để hiển thị đồ Hơn bắt buộc bạn cung cấp điểm vĩ độ/kinh độ mình, dịch địa người dùng đọc vào vĩ độ/kinh độ thay cho bạn Phép biến đổi gọi mã địa lí (geocoding) (xem Tài nguyên) Về viết Grails khung làm việc phát triển Web đại mà hòa trộn với kỹ thuật Java™ quen thuộc Spring Hibernate với thực hành đương thời quy ước qua cấu hình Ghi vào Groovy, Grails cho bạn tích hợp liền mạch với mã Java bạn việc thêm cách mềm dẻo linh động ngôn ngữ tập lệnh Sau bạn học Grails, bạn khơng nhìn việc phát triển Web lại theo cách tương tự Một phép biến đổi tương tự xảy bạn lướt Web Về kỹ thuật, cách để liên lạc với máy chủ Web từ xa địa IP máy chủ cung cấp May thay, bạn không cần nhập địa IP Bạn nhập URL thân thiện vào trình duyệt Web bạn, thực việc gọi máy chủ Hệ thống Tên Miền (Domain Name System (DNS)) Máy chủ DNS đổi URL thành địa IP tương ứng, trình duyệt thực kết nối HTTP tới máy chủ từ xa Tất điều suốt với người dùng DNS thực Web vô dễ dàng để sử dụng Những trình sinh mã địa lí (geocoder) thực việc tương tự cho ứng dụng đồ dựa Web Tìm kiếm Web nhanh trình sinh mã địa kí miễn phí mang lại số khả phù hợp với nhu cầu mã hóa địa lí người lập kế hoạch chuyến Cả Google Yahoo! cung cấp dịch vụ mã địa lý phần tiêu chuẩn API họ, với ứng dụng này, sử dụng dịch vụ mã địa lý miễn phí cung cấp geonames.org (xem Tài nguyên) RESTful API cho phép tơi tơi cung cấp mã IATA thay giới hạn tìm kiếm-văn chung chung Tơi khơng có chống lại cư dân Ord, Ned., quan tâm Sân bay Quốc tế Chicago O'Hare Nhập URL http://ws.geonames.org/search?name_equals=den&fcode=airp&style=full vào trình duyệt Web bạn Bạn nên xem XML trả trình bày Ví dụ 1: Ví dụ XML trả từ yêu cầu mã địa lý 1 Denver International Airport 39.8583188 -104.6674674 5419401 US United States S AIRP spot, building, farm airport DEN,KDEN 1655 NA CO Colorado 031 Denver County DEN KDEN America/Denver Tham số name_equals URL bạn nhập vào mã IATA cho sân bay Nó phần URL mà cần bị thay đổi cho truy vấn fcode=airp mã đặc trưng bạn tìm kiếm sân bay Tham số style — short, medium, long, full — rõ tính đầy đủ câu trả lời XML Giờ bạn có trình sinh mã địa lý, bước tích hợp vào ứng dụng Grails bạn Để làm vậy, bạn cần dịch vụ Những dịch vụ Grails Bằng điểm loạt Làm chủ Grails, bạn có ý tưởng hay phân lớp miền, kiểm soát, Trang Máy chủ Groovy (GSP) tất làm việc với kiểu tổ hợp Chúng làm cho thao tác Tạo/Truy lục/Cập nhật/Xóa (Create/Retrieve/Update/Delete (CRUD)) dễ dàng kiểu liệu đơn Dịch vụ mã địa lý vượt chút phạm vi phép biến đổi Ánh xạ Quan hệ Đối tượng Grails (Grails Object Relational Mapping (GORM)) từ ghi sở liệu quan hệ tới POGOs (các đối tượng Groovy cũ đơn giản) Ngoài ra, dịch vụ sử dụng nhiều phương thức Cả save update cần mã địa lý mã IATA, bạn thấy thời điểm Grails cung cấp cho bạn nơi để lưu trữ phương thức sử dụng phổ biến mà vượt qua lớp miền đơn: dịch vụ Để tạo dịch vụ Grails, gõ grails create-service Geocoder dịng lệnh Xem grails-app/services/GeocoderService.groovy, trình bày Ví dụ 2, soạn thảo văn bản: Ví dụ Một dịch vụ Grails nhiều nhánh-ra class GeocoderService { boolean transactional = true def serviceMethod() { } } Trường transactional quan tâm bạn thực truy vấn sở liệu phức tạp phương thức Nó gói thứ giao dịch sở liệu đơn mà trả truy vấn lỗi Bởi ví dụ bạn thực gọi dịch vụ Web từ xa, bạn thiết lập cách an toàn false serviceMethod tên trình giữ chỗ mà thay đổi thành mơ tả (Các dịch vụ chứa nhiều phương thức bạn muốn.) Trong Ví dụ 3, tơi thay đổi tên thành geocodeAirport: Ví dụ Phương thức dịch vụ trình sinh mã địa lý geocodeAirport() class GeocoderService { boolean transactional = false // http://ws.geonames.org/search?name_equals=den&fcode=airp&style=full def geocodeAirport(String iata) { def base = "http://ws.geonames.org/search?" def qs = [] qs Chú ý khóa API bạn nhúng vào tập lệnh URL đầu trang Trong phương thức load, bạn thể đối tượng GMap2 Đây đồ mà xuất với ID map cuối trang Nếu bạn muốn đồ lớn hơn, điều chỉnh độ rộng chiều cao thuộc tính style Cascading Style Sheets (CSS) Hiện đồ tập trung vào Palo Alto, Calif mức độ phóng 13 (Mức mức thu nhỏ tất trường hợp Khi số tăng lên, bạn có khung nhìn đường phố rõ hơn) Bạn điều chỉnh giá trị thời điểm Trong chờ đợi, thêm bao đóng map rỗng vào AirlineController, trình bày Ví dụ 12: Ví dụ 12 Thêm bao đóng map class AirportController { def map = {} } Bây vào địa http://localhost:9090/trip/airport/map trình duyệt bạn Bạn thấy Bản đồ Google nhúng, giống Hình 5: Hình Bản đồ Google đơn giản Bây quay lại map.gsp ngắt giá trị, biểu diễn Ví dụ 13: Ví dụ 13 Điều chỉnh đồ var usCenterPoint = new GLatLng(39.833333, -98.583333) var usZoom = function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")) map.setCenter(usCenterPoint, usZoom) map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); } } 800 x 400 điểm ảnh tập kích thước tốt cho việc xem tồn đồ nước Mỹ Ví dụ 13 điều chỉnh điểm trung tâm mức độ phóng để bạn xem tồn đồ Bạn thêm số điều khiển đồ khác GLargeMapControl GMapTypeControl Ví dụ 13 cho bạn điều khiển thơng thường dọc theo góc trái phải đồ Định kì nhấn nút Refresh trình duyệt bạn để xem thay đổi bạn có hiệu lực bạn thực xung quanh Hình phản ánh điều chỉnh thực Ví dụ 13: Hình Bản đồ điều chỉnh Bây đồ bạn đây, bạn sẵn sàng để bắt đầu thêm đánh dấu — push-pin cho sân bay bạn Trước tơi tự động hóa tiến trình, Ví dụ 14 thêm đánh dấu đơn cách thủ cơng: Ví dụ 14 Thêm đánh dấu vào đồ var usCenterPoint = new GLatLng(39.833333, -98.583333) var usZoom = function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")) map.setCenter(usCenterPoint, usZoom) map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); var marker = new GMarker(new GLatLng(39.8583188, -104.6674674)) marker.bindInfoWindowHtml("DENDenver International Airport") map.addOverlay(marker) } } Hàm GMarker đưa điểm GLatLng Phương thức bindInfoWindowHtml cung cấp đoạn mã HTML hiển thị cửa sổ Info người dùng nhấn vào đánh dấu Điều cuối Ví dụ 14 thực thêm đánh dấu vào đồ sử dụng phương thức addOverlay Hình thể đồ với đánh dấu thêm vào: Hình Bản đồ với đánh dấu Vì bạn biết làm để thêm điểm đơn, việc thêm cách tự động tất điểm từ sở liệu yêu cầu hai thay đổi nhỏ Thay đổi thứ để thực bao đóng map AirportController trả danh sách Airport, trình bày Ví dụ 15: Ví dụ 15 Trả danh sách Airport def map = { [airportList: Airport.list()] } Tiếp theo, bạn cần lặp lặp lại danh sách Airport tạo đánh dấu cho danh sách Trong phần trước loạt này, bạn thấy thẻ dùng để thêm dịng vào bảng HTML Ví dụ 16 sử dụng thẻ để tạo dòng JavaScript cần thiết để hiển thị Airport đồ: Ví dụ 16 Thêm đánh dấu vào đồ var usCenterPoint = new GLatLng(39.833333, -98.583333) var usZoom = function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")) map.setCenter(usCenterPoint, usZoom) map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); var point${airport.id} = new GLatLng(${airport.lat}, ${airport.lng}) var marker${airport.id} = new GMarker(point${airport.id}) marker${airport.id}.bindInfoWindowHtml("${airport.iata}${airport.name}") map.addOverlay(marker${airport.id}) } } Hình cho thấy đồ với tất đánh dấu thêm vào cách tự động: Hình Bản đồ với nhiều đánh dấu Chuyến API Bản đồ Google vừa đủ để bạn thảo luận sơ qua bề thứ mà bạn làm Bạn định đề cập đến mơ hình kiện để thực lời gọi Ajax mà trả liệu JavaScript Object Notation (JSON) đánh dấu nhấn Bạn sử dụng GPolyline để vẽ chặng riêng chuyến đồ Các khả vô tận Để biết thêm thông tin, tài liệu trực tuyến Google tuyệt vời Bạn có giới thiệu nhỏ API từ sách PDF Google Maps API (xem Tài nguyên) Kết luận Việc thêm đồ vào ứng dụng Grails bạn yêu cầu đưa vào ba thành phần Phần mã địa lý liệu bạn Ngồi có nhiều trình sinh mã địa lí miễn phí mà chuyển đổi vị trí người dùng đọc thành điểm vĩ độ/kinh độ Gần điều mã hóa địa lí: địa đường phố, thành phố, hạt, bang, quốc gia, mã vùng, số điện thoại, địa IP, chí mã IATA cho sân bay Một bạn tìm thấy trình sinh mã địa lí cho cơng việc, tạo dịch vụ Grails để đóng gói dịch vụ Web từ xa gọi đến phương thức sử dụng lại Những dịch vụ cho phương thức mà xa thao tác CRUD đơn giản đối tượng miền đơn Những dịch vụ khơng liên quan đến URL mặc định, bạn tạo cách dễ dàng bao đóng điều khiển để thực địa hóa Web chúng Cuối cùng, tận dùng ưu điểm API ánh xạ Web miễn phí chẳng hạn Bản đồ Google để vẽ điểm vĩ độ/kinh độ bạn đồ Những dịch vụ miễn phí thường đòi hỏi ứng dụng bạn truy cập miễn phí Nếu bạn muốn giữ đồ cá nhân riêng bạn, xem xét API nguồn mở chẳng hạn OpenLayers, cung cấp kinh nghiệm người dùng giống Bản đồ Google mà khơng có hạn chế sử dụng tương ứng (xem Tài nguyên) Bạn cần phải cung cấp lớp đồ riêng bạn, bạn lưu trữ tồn ứng dụng vào máy chủ riêng bạn Trong viết tiếp theo, tơi nói cách để thực ứng dụng Grails bạn mạng di động cách thân thiện Bạn biết làm để tối ưu khung nhìn cho hiển thị iPhone Tơi giải thích việc gửi thơng tin từ Grails qua thư điện tử mà xuất tin nhắn SMS điện thoại bạn Cho đến lúc đó, vui vẻ với việc nắm vững Grails Mục lục  Mã địa lí  Những dịch vụ Grails  Hòa trộn dịch vụ  Các đồ Google  Kết luận ... trộn vào dịch vụ mã địa lí, bạn thiết lập cho thân đồ dễ dàng để hiển thị đối tượng — tơi làm Các đồ Google Hầu hết người đồng ý Các đồ Google thiết lập chuẩn giúp dễ sử dụng thành đồ Web Một vài... tích hợp vào ứng dụng Grails bạn Để làm vậy, bạn cần dịch vụ Những dịch vụ Grails Bằng điểm loạt Làm chủ Grails, bạn có ý tưởng hay phân lớp miền, kiểm soát, Trang Máy chủ Groovy (GSP) tất làm việc... đơn: dịch vụ Để tạo dịch vụ Grails, gõ grails create-service Geocoder dịng lệnh Xem grails- app/services/GeocoderService.groovy, trình bày Ví dụ 2, soạn thảo văn bản: Ví dụ Một dịch vụ Grails

Ngày đăng: 11/05/2021, 02:45