Bản chất chương trình hiển thị ảnh quang cảnh 360 là một chương trình chạy trên thiết bị hệ điều hành IOS.
IOS là hệ điều hành trên các thiết bị di động của Apple. Ban đầu hệ điều hành này chỉ được phát triển để chạy trên iPhone (gọi là iPhone OS), nhưng sau đó nó đã được mở rộng để chạy trên các thiết bị của Apple như iPod touch, iPad và Apple TV.
Giao diện người dùng của iOS dựa trên cơ sở thao tác bằng tay. Người dùng có thể tương tác với hệ điều hành này thông qua rất nhiều động tác bằng tay trên màn hình cảm ứng của các thiết bị của Apple.
Phiên bản mới nhất của iOS là 8, dành cho tất cả các thiết bị kể từ iPhone 4s, iPod 5, iPad 2 trở lên.
3.2.2.2 Các chƣơng trình mã nguồn mở đƣợc sử dụng
Để hoàn thiện ứng dụng phần máy khách, luận văn có sử dụng một số module mã nguồn mở sau [14]:
- PanoramaGL: đây là thư viện mã nguồn mở được phát triển bằng ngôn ngữ
Object-C bởi tác giả Javiez Baez cho phép hiển thị ảnh panorama trên các thiết bị iOS như iPhone, iPod, iPad.
Một số đặc điểm và tính năng của thư viện o Hỗ trợ từ iOS 4.0 trở lên.
o Hỗ trợ OPENGL ES 1.1.
o Hỗ trợ các ảnh panorama dạng hình cầu, hình lập phương và hình trụ. o Cho phép cuộn ảnh.
o Cho phép phóng to và thu nhỏ tại một điểm. o Hỗ trợ hotspots.
o Có thể sử dụng giao thức JSON để hiển thị ảnh panorama.
Do các loại ảnh panorama hình cầu và hình lập phương cần nhiều ảnh để hiển thị nên có các định dạng tệp tin json tương ứng.
o Hiển thị ảnh hình cầu: {
"urlBase": "res://", //This is always res:// (this feature will be improve for support http protocol)
"type": "spherical", //Panorama type: spherical, spherical2, cubic, cylindrical
"sensorialRotation": false, //Simulated gyroscope [true, false] (Optional) "images": //Panoramic images section
{
"preview": "preview.jpg", //Preview image (Optional, this option will be used with http protocol)
"image": "pano.jpg" //Panoramic image name for spherical, spherical2 and cylindrical panoramas
"front": "front.jpg", //Front image for cubic panorama (only use with cubic panorama)
"back": "back.jpg", //Back image for cubic panorama (only use with cubic panorama)
"left": "left.jpg", //Left image for cubic panorama (only use with cubic panorama)
"right": "right.jpg", //Right image for cubic panorama (only use with cubic panorama)
"up": "up.jpg", //Up image for cubic panorama (only use with cubic panorama)
"down": "down.jpg" //Down image for cubic panorama (only use with cubic panorama)
},
"camera": //Camera settings section (Optional) {
"vlookat": 0, //Initial vertical position [-90, 90] "hlookat": 0, //Initial horizontal position [-180, 180] "atvmin": -90, //Min vertical position [-90, 90]
"atvmax": 90, //Max vertical position [-90, 90] "athmin": -180, //Min horizontal position [-180, 180] "athmax": 180 //Max horizontal position [-180, 180]
},
"hotspots": [ //Hotspots section (Optional, this section is an array of hotspots) {
"id": 1, //Hotspot identifier (long) "atv": 0, //Vertical position [-90, 90] "ath": 0, //Horizontal position [-180, 180] "width": 0.08, //Width
"height": 0.08, //Height "image": "hotspot.png" //Image } ] } o Hiển thị ảnh hình lập phương: { "urlBase": "res://", "type": "cubic", "sensorialRotation": false, "images": { "preview": "pano_preview.jpg", "front": "pano_f.jpg", "back": "pano_b.jpg", "left": "pano_l.jpg", "right": "pano_r.jpg", "up": "pano_u.jpg", "down": "pano_d.jpg" }, "camera": { "vlookat": 0, "hlookat": 0, "atvmin": -90, "atvmax": 90, "athmin": -180, "athmax": 180 },
"hotspots": [ { "id": 1, "atv": 0, "ath": 0, "width": 0.08, "height": 0.08, "image": "hotspot.png" } ] }
- SBJson: đây là thư viện phân tích ngữ pháp các chuỗi định dạng json của tác
giả Stig Brautaset viết bằng ngôn ngữ Object-C. Nó có chức năng chính là
chuyển các chuỗi định dạng json thành một mảng hay một đối tượng và ngược lại.
- ASIHTTPRequest: đây là thư viện viết lại hàm kết nối webservice mặc định
của Object-Ccác giao thức của HTML request cơ bản như GET, POST, PUT, DELETE. Các đặc điểm chính cơ bản như sau:
Giao diện đơn giản cho việc gửi dữ liệu đến và lấy dữ liệu từ máy chủ web.
Tải dữ liệu vào bộ nhớ hoặc trực tiếp vào một tập tin trên đĩa.
Khả năng gửi các tập tin trên ổ đĩa địa phương như một phần của dữ liệu POST, giống như cơ chế của HTML.
Dễ dàng truy cập request và response trong header của HTTP. Hỗ trợ quản lý tiến trình tải lên và tải xuống.
Tự động quản lý các tiến trình tải lên và tải xuống trong hàng đợi. Hỗ trợ xác thực basic, digest và NTLM, thông tin sẽ được tự động lưu
suốt phiên làm việc, và có thể được lưu sau nữa trên Keychain. Hỗ trợ Cookie.
Các tiến trình vẫn có thể tiếp tục khi ứng dụng để ở chế độ chạy ngầm (chức năng này từ IOS 4 trở nên).
Hỗ trợ nén GZIP yêu cầu và cho dữ liệu trả về. Hỗ trợ yêu cầu đồng bộ và bất đồng bộ.
Hỗ trợ trên cả hệ điều hành IOS và MAC OS.
3.2.2.3 Các tính năng hỗ trợ sẵn
- Hệ thống định vị toàn cầu GPS:
GPS (Global Positioning System) là hệ thống xác định vị trí dựa trên vị trí của các vệ tinh nhân tạo, do Bộ Quốc phòng Hoa Kỳ thiết kế, xây dựng, vận hành và quản lý. GPS ban đầu chỉ dành cho các mục đích quân sự, nhưng từ năm 1980 chính phủ Mỹ cho phép sử dụng trong dân sự. GPS hoạt động trong mọi điều kiện thời tiết, mọi nơi trên Trái Đất, 24 giờ một ngày. Không mất phí thuê bao hoặc mất tiền trả cho việc thiết lập sử dụng GPS nhưng phải tốn tiền không rẻ để mua thiết bị thu tín hiệu và phần mềm nhúng hỗ trợ.
Các vệ tinh GPS bay vòng quanh Trái Đất hai lần trong một ngày theo một quỹ đạo rất chính xác và phát tín hiệu có thông tin xuống Trái Đất. Các máy thu GPS nhận thông tin này và bằng phép tính lượng giác tính được chính xác vị trí của người dùng. Về bản chất máy thu GPS so sánh thời gian tín hiệu được phát đi từ vệ tinh với thời gian nhận được chúng. Sai lệch về thời gian cho biết máy thu GPS ở cách vệ tinh bao xa. Rồi với nhiều quãng cách đo được tới nhiều vệ tinh máy thu có thể tính được vị trí của người dùng và hiển thị lên bản đồ điện tử của máy.
Máy thu phải nhận được tín hiệu của ít nhất ba vệ tinh để tính ra vị trí hai chiều (kinh độ và vĩ độ) và để theo dõi được chuyển động. Khi nhận được tín hiệu của ít nhất 4 vệ tinh thì máy thu có thể tính được vị trí ba chiều (kinh độ, vĩ độ và độ cao). Một khi vị trí người dùng đã tính được thì máy thu GPS có thể tính các thông tin khác, như tốc độ, hướng chuyển động, bám sát di chuyển, khoảng hành trình, quãng cách tới điểm đến, thời gian Mặt Trời mọc, lặn và nhiều thứ khác nữa.
Các máy thu GPS ngày nay cực kì chính xác, nhờ vào thiết kế nhiều kênh hoạt động song song của chúng. Các máy thu 12 kênh song song (của Garmin) nhanh chóng khóa vào các quả vệ tinh khi mới bật lên và chúng duy trì kết nối bền vững, thậm chí trong tán lá rậm rạp hoặc thành phố với các toà nhà cao tầng. Trạng thái của khí quyển và các nguồn gây sai số khác có thể ảnh hưởng tới độ chính xác của máy thu GPS. Các máy thu GPS có độ chính xác trung bình trong vòng 15 mét.
- Nền tảng bản đồ Apple Map:
Đây là phần mềm bản đồ miễn phí được cung cấp bởi Apple. Nó được tích hợp sẵn cho các lập trình viên sử dụng cho các ứng dụng dẫn đường định vị từ IOS 6.0 thay cho bản đồ Google Maps được sử dụng trước đó.
Khi mở ứng dụng, đầu tiên bạn sẽ được điều hướng tới vị trí hiện tại của mình. Để tìm đích đến, bạn chỉ cần nhập địa chỉ vào thanh tìm kiếm phía trên hoặc bạn cũng có thể dùng giọng nói để tìm đích đến thông qua Siri. Tuy nhiên hệ thống này không có các lựa chọn đường ngắn nhất hay nhanh nhất, hoặc tránh các vị trí đường cao tốc hay trạm thu phí.
Có ba chế độ hiển thị bản đồ là dạng vệ tinh, dạng tiêu chuẩn và dạng kết hợp giữa vệ tinh và dạng chuẩn. Hệ thống này sử dụng dữ liệu từ TOMTOM và một số nguồn khác.
Ở chế độ dẫn đường, màn hình ứng hiển thị thời gian và khoảng cách còn lại từ vị trí của bạn đến điểm đích. Khi đến các vị trí điểm chuyển hướng, ứng dụng có cảnh báo bằng giọng nói của Siri. Ứng dụng sẽ cập nhật vị trí hiện tại của bạn trên bản đồ. Bạn có thể xem toàn con đường bằng cách nhấn Overview góc trên bên phải.
Trong chế độ Flyover cho phép người dùng quan sát vị trí hiện tại dạng 3D và tương tác trực tiếp (ở các vị trí có dữ liệu 3D). Chức năng này chỉ hỗ trỡ các dòng thiết bị từ Iphone 4s, Ipad 2 và Ipod touch thế hệ thứ 5 trở về sau.
3.3 Kết quả xây dựng hệ thống 3.3.1 Máy chủ