Location Services with Google Maps SDK and Places API
AdventureTube integrates Google Maps SDK and Google Places API for location-based storytelling.
Key Features
✅ Interactive Maps – Display story locations on Google Maps
✅ Place Search – Find locations using Google Places API
✅ Custom Markers – Show chapters on map with custom pins
✅ Place Details – Rich location metadata (rating, photos, types)
✅ Coordinates – Latitude/longitude for precise positioning
APIs Used
- Google Maps SDK for iOS v7.3.0
- Google Places SDK for iOS v5.0.0
- Google Maps iOS Utils v4.2.2
API Key Configuration
⚠️ Security Note: API keys should never be committed to source code or published publicly.
// Configure in AppDelegate or SceneDelegate
static let API_KEY = "YOUR_GOOGLE_MAPS_API_KEY"
// Best practice: Store in .xcconfig file or environment variables
// Add to .gitignore to prevent accidental commits
UIKit Bridges
AdventureTube uses UIKit bridges to integrate Google Maps into SwiftUI:
StoryMapViewController.swift– UIKit map controllerStoryMapViewControllerBridge.swift– SwiftUI wrapperGoogleMapViewForCreateStoryController.swift– Chapter creation map
Location Data Models
AdventureTubePlace
struct AdventureTubePlace: Codable {
let placeID: String
let name: String
let latitude: Double
let longitude: Double
let rating: Double?
let types: [String]?
let formattedAddress: String?
}
PlaceEntity (Core Data)
Stores Google Place data with coordinates, rating, types, and photos.
Best Practices
✅ Restrict API keys in Google Cloud Console
✅ Cache place photos in Core Data
✅ Use coordinate bounds for multiple markers
✅ Handle location permissions properly
✅ Store API keys securely (never in source code)
❌ Don’t expose API keys in client code
❌ Don’t make excessive API calls – implement caching
❌ Don’t ignore rate limits
❌ Don’t commit API keys to version control
