Như các bạn đã biết, khi một ứng dụng trên iOS muốn sử dụng map thì mặc nhiên chúng ta liền nghĩ đến 2 loại map MapKit hay Google Maps, một cái được Apple phát triển và tích hợp sẵn trong Xcode, còn 1 cái thì được phát hành bởi ông lớn Google. Theo quan điểm cá nhân, khi khách hàng không chỉ đích danh phải dùng loại map nào thì mình luôn chọn Google Maps, vì sự chính xác, tiện lợi và thân thiện của nó.

1. Tổng quát về app

Đây là một app sẽ cho người dùng nhìn thấy được những nhà hàng ở trên khung hiển thị của bản đồ trong một bán kính nhất định, đồng nghĩa với việc khi move map để xem những địa điểm khác thì sẽ show những nhà hàng ở những địa điểm đó. Khi người dùng touch vào biểu tượng nhà hàng nào đó trên map thì sẽ hiển thị lên 1 khung nhỏ chứa những thông tin cơ bản của nhà hàng đó, nhấn tiếp vào khung nhỏ này thì sẽ vào xem đầy đủ thông tin của nhà hàng.

2. Kỹ thuật trong app

2.1. Thư viện pod

  • Map: Google Maps, GooglePlaces
  • API: Alamofire, AlamofireImage, ObjectMapper
  • Một vài thư viện tiện ích khác: SnapKit, Cosmos, PKHUD, PromiseKit

2.2. Một vài setup cơ bản

Google Maps
Chúng ta chỉ cần truy cập website này https://developers.google.com/maps/documentation/ios-sdk/start và làm theo các bước trong đó là có thể làm được, nó rất rõ ràng và rất dễ để làm theo
Việc thực hiện bước 4 để get 1 cái API key, có cái API key thì mới có thể làm việc được với google maps, để nó có thể hoạt động được trên app và làm nhiều thao tác hơn với Google Places.

Sau setup thì function didFinishLaunchingWithOptions trong AppDelegate sẽ có hàm:
GMSServices.provideAPIKey("YOUR_API_KEY")

Google Places
Nói đến Google Places thì nó k được tích hợp trong thư viện GoogleMaps mà nó riêng biệt thành 1 cái riêng là GooglePlaces, chúng ta phải import nó trong Podfile và setup riêng, nó giống như là tiện ích mở rộng của GoogleMap vậy.
Website để setup nó: https://developers.google.com/places/ios-api/start?hl=vi

Podfile sẽ có dạng như này:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for YOUR_APPLICATION_TARGET_NAME_HERE
  pod 'GoogleMaps'
  pod 'GooglePlaces'
end

Sau setup thì function didFinishLaunchingWithOptions trong AppDelegate sẽ có hàm:
GMSServices.provideAPIKey("YOUR_API_KEY") // Google Maps
GMSPlacesClient.provideAPIKey("YOUR_API_KEY") // Google Places

Setup thì mình chỉ nêu cái chính là làm việc với cái map thôi, còn những thứ lặt vặt thì k cần thiết phải nêu ra cho mất thời gian vì chỉ cần truy cập 2 link trên là hoàn chỉnh rồi, đảm bảo chạy tốt.
Google Maps: https://developers.google.com/maps/documentation/ios-sdk/start
Google Places: https://developers.google.com/places/ios-api/start?hl=vi

3. Một vài tính năng của app

Tìm kiếm những nhà hàng ở xung quanh
Khi người dùng mở app lên thì sẽ hiển thị cái bản đồ, trên bản đồ có những nhà hàng xung quanh đó. Khi nhấn giữ và kéo để xem những vùng khác hoặc zoom thì những nhà hàng cũng được cập nhật theo khu vực đang hiển thị mà người dùng k cần phải di chuyển đến khu vực đó. Nghĩa là ngồi ở Việt Nam, chúng ta cũng có thể xem được bên Mỹ có những nhà hàng nào 😄

Xem chi tiết một nhà hàng
Xem được chi tiết một nhà hàng giống như xem trên website Google Maps của Google.

4. Một vài hình ảnh demo

Lời kết

Thật sự thì cũng muốn search một cái gì đó hay ho rồi chia sẻ cho mọi người, nhưng cũng không nghĩ được ra thứ gì nên lấy tạm cái mình đã làm show lên cho anh chị em xem chơi, project này cũng hơi lâu rồi, lúc mình tham gia 1 vòng thi freelancer trên UpWork, pass được vòng code rồi mà vô phỏng vấn toàn tiếng Anh nên tạch mất 😅 . Vì làm để thi nên họ yêu cầu gì mình làm nấy, chứ không mở rộng kiểu như: tìm đường đi ngắn nhất tới nhà hàng, có thanh search để search nhiều thứ khác, v.v...

Link source code: https://github.com/LeVanTuan/iOSQuiz

Cảm ơn mọi người đã đọc bài viết này.