
This comprehensive tutorial will walk you through building a Google Maps-style application using Adalo's no-code platform. While some features like real-time tracking and turn-by-turn navigation aren't possible, you'll create a functional mapping app with location search, place discovery, and user positioning features.
Prerequisites and Initial Setup
Step 1: Create Your Adalo Account
- Go to Adalo.com and sign up
- Click "Create New App"
- Choose Responsive App (Adalo 2.0). Mobile App also works; Responsive is recommended for modern layouts
- Name your app (e.g., "MapsClone")
- Select "Start from Scratch"
Step 2: Configure App Settings
- Choose primary colors (Google Maps uses blue/white)
- Select light theme for map visibility
- Pick a clean, modern font (Roboto works well)
- Click "Continue" to enter editor
Step 3: Get Your Google API Key
- In Google Cloud Console, create/select a project
- Enable: Maps JavaScript API, Places API, Geocoding API (and if you'll build native apps, also Maps SDK for iOS and Maps SDK for Android)
- Go to APIs & Services → Credentials → Create credentials → API key
- In Adalo, open App Settings → API Keys and paste the key
- On your map, paste the same key in the Maps component's API Key field
Learn how to get your Google API Key
Setting Up the Database
Step 4: Enhance the Users Collection
- Click Database icon in left sidebar
- Select the default "Users" collection
- Add these properties (click "+ Add Property"):
- Current Location (Location)
- Home Address (Location)
- Work Address (Location)
- Saved Places (Relationship to Places - Many to Many)
- Preferred Map Type (Text - default: "roadmap")
- Location Sharing (True/False - default: false)
- Last Location Update (Date & Time)
Learn more about Location Property Type
Step 5: Create Places Collection
- Click "+ Add Collection"
- Name it "Places"
- Add properties:
- Name (Text)
- Location (Location) - Primary address
- Category (Text) - Values: "restaurant", "gas", "hotel", etc.
- Photo (Image)
- Rating (Number - 1-5)
- Price Level (Text) - "$", "$$", "$$$", "$$$$"
- Phone Number (Text)
- Website (Text - URL)
- Hours (Text - Multiline)
- Description (Text - Multiline)
- Created By (Relationship to Users)
- Created At (Date & Time - Automatic)
Step 6: Create Search History Collection
- Click "+ Add Collection"
- Name it "Search History"
- Add properties:
- Search Query (Text)
- Search Location (Location)
- Search Type (Text) - "place", "address", "coordinate"
- Timestamp (Date & Time - Automatic)
- Selected Result (Relationship to Places)
Step 7: Create Reviews Collection
- Click "+ Add Collection"
- Name it "Reviews"
- Add properties:
- Rating (Number)
- Comment (Text - Multiline)
- Photos (Image)
- Created At (Date & Time - Automatic)
- Helpful Count (Number - default: 0)
Step 8: Create Routes Collection (For saved directions)
- Click "+ Add Collection"
- Name it "Routes"
- Add properties:
- Start Location (Location)
- End Location (Location)
- Waypoints (Text - for JSON array)
- Distance (Number) - in kilometers
- Estimated Time (Number) - in minutes
- Route Name (Text)
- Is Favorite (True/False)
Step 9: Set Up Relationships
- In Search History:
- Add "User" → Users (Many to One)
- In Reviews:
- Add "Place" → Places (Many to One)
- Add "Author" → Users (Many to One)
- In Routes:
- Add "User" → Users (Many to One)
- Add "Start Place" → Places (Many to One)
- Add "End Place" → Places (Many to One)
Learn more about Databases
Building the Main Map Interface
Step 10: Create Map Screen
- Add new screen "Map"
- Make it the home screen
- Delete default App Bar
- Set background color to white
Step 11: Add Maps Component
- Open the Marketplace (left sidebar)
- Search "Maps" and click Add (installs immediately)
- Drag the Maps component onto your Map screen and make it full-bleed
Learn how to integrate Maps Component
Step 12: Configure Map Settings
- Select the Maps component
- API Key: paste your Google API key
- What does this map show?
- Choose Single Marker (one address) or Multiple Markers (from a collection)
- Map Style: pick Roadmap, Hybrid, Satellite, or Terrain (this is a component setting, not bound via Magic Text)
- (Optional) Custom Style JSON for a styled map
Step 13: Add Map Markers
- In Maps settings, open What does this map show? → Multiple Markers
- Records: select your Places collection
- Address for each marker: bind the Location (or address fields via Magic Text)
- (Optional) Filter the records (e.g., by Category)
- (Optional) Max number of records and Sort (e.g., by Rating)
- Add a Click Action on marker press (e.g., go to Place Details)
Step 14: Create Search Overlay
- Add Rectangle at top of screen
- Style: White background, shadow, rounded corners
- Add Text Input inside:
- Placeholder: "Search Google Maps"
- Icon: Search icon on left
- Add Icon Button (GPS/location icon)
- Action: Update Logged In User → Current Location → Current Device Location
Implementing Search Functionality
Step 15: Build Search Results Screen
- Add a Search Results screen
- Add a Custom List of Places
- Filter: Name contains the text input value (from the previous screen)
- If you use a Location Input (Step 17), you can also filter by distance (see Step 16)
- Each list item: image, name, category/rating, and a distance label
Step 16: Add Distance Calculations
- In the list item, add a Text component
- Set Magic Text to:
KILOMETERS(Current Device Location Latitude, Current Device Location Longitude, Current Place Location Latitude, Current Place Location Longitude) - Format as: X.X km away
Location Formulas documentation
Step 17: Implement Location Search
- On your Map (or a dedicated Search) screen, add a Location Input
- Bind it to Search History → Search Location (optional)
- Turn on Autocomplete and optionally Show current location
- Add a Search button that:
- (a) Creates a Search History record (optional), then
- (b) Navigates to Search Results (or refreshes Map) with the chosen location in params
Step 18: Configure Search Filters
- Add a Dropdown (or segmented control) labeled "Category"
- Options: Restaurants, Gas, Hotels, ATMs, Parking
- Apply the dropdown's value directly in your Places list Filter:
- Category equals [Dropdown > Value]
- (Optional) add a second filter using Comparing Locations to keep results within a chosen distance
- Add a Clear Filters button that sets the dropdown back to "All"
Creating Location Features
Step 19: Request Location Permissions
- After login (e.g., on Home/Map), add an Action → Permissions → Request Location Permissions
- If granted → continue; if denied → show an explanation screen with a retry
- Note: Users must be logged in for permission actions to work
Learn how to access User's Location
Step 20: Build "My Location" Button
- Add a floating Icon Button on the Map screen
- Action: Change Data → Update Logged-In User → Current Location = Current Device Location
- Lists/markers that are filtered relative to the user's location will refresh on tap. (The Maps component does not expose actions to change map center or zoom.)
Step 21: Create Saved Places
- Add new screen "Saved Places"
- Add tabs: Home, Work, Favorites
- For Home/Work:
- Add Location Input component
- Save to User's Home/Work Address
- For Favorites:
- Show list of Saved Places relationship
- Add/remove places with bookmark icon
Step 22: Implement Place Details
- Add new screen "Place Details"
- Add components:
- Image (full width hero image)
- Text (place name, large)
- Rating component
- Text (address, phone, website)
- Map (small, showing single location)
- Add action buttons:
- Directions (link to external maps)
- Save place
- Share
Building Navigation Features (Limited)
Step 23: Create Directions Screen
- Add new screen "Get Directions"
- Add two Location Input components:
- Start location (default: Current Location)
- End location
- Add transport mode selector:
- Car, Walk, Transit, Bike (visual only)
- Note: Cannot calculate actual routes
Step 24: Add Distance Display
- Below inputs, add Text component
- Show straight-line distance:
Distance: KILOMETERS(Start Latitude, Start Longitude, End Latitude, End Longitude) km - Add disclaimer: "Straight-line distance"
Step 25: External Navigation Links
- Add "Start Navigation" button
- Create URL with Magic Text:
https://maps.google.com/maps?saddr=[Start Lat],[Start Long]&daddr=[End Lat],[End Long] - Action: Open website (external browser)
Adding User Features
Step 26: Build Profile Screen
- Add new screen "Profile"
- Display user information:
- Profile photo
- Name and email
- Home/Work addresses
- Saved places count
- Add settings section:
- Map type preference
- Location sharing toggle
- Search history management
Step 27: Create Location Sharing
- Add toggle in Profile
- When enabled:
- Update User → Location Sharing → True
- Update User → Current Location periodically
- Note: Only updates on user actions, not real-time
Step 28: Implement Search History
- On Profile, add "Search History" link
- Create Search History screen
- Show list of Search History records:
- Grouped by date
- Show query and timestamp
- Click to repeat search
- Add clear history button
Implementing Business Features
Step 29: Add Place Reviews
- On Place Details screen
- Add Custom List for Reviews:
- Filter by Current Place
- Sort by Created At (newest first)
- Show:
- Author name and photo
- Star rating
- Comment text
- Review photos
Step 30: Create Review Form
- Add "Write Review" button
- Create Review Form screen:
- Rating input (1-5 stars)
- Text Input (multiline comment)
- Image Picker (optional photos)
- On submit:
- Create Review record
- Update Place average rating
- Navigate back
Step 31: Build Business Hours Display
- In Places, add properties for structured hours (e.g., Mon Open (Time), Mon Close (Time), … for each day)
- On Place Details, show an expandable Hours section bound to those fields
- Show current status using visibility rules/conditions:
- Show "Open now" (green) when Current time is between today's open/close
- Otherwise show "Closed" (red) and Next opening time
Optimizing Performance
Step 32: Limit Map Markers
- Limit markers (Max number of records) and keep list items light
- Use distance-based filtering for markers
- Add a "Search this area" button that always shows; on tap, re-run your list filters based on the map's visible center the user selected (e.g., via a Location Input or saved coordinate)
Step 33: Implement Caching Strategy
- Prefer coordinates (lat/long) you already store over re-geocoding addresses to reduce API calls
- Store frequently accessed locations:
- Recent searches
- Viewed places
- Common destinations
- Use stored coordinates instead of addresses
Step 34: Configure API Usage
- Use smaller thumbnails and keep list items light
- Monitor usage in Google Cloud and tune queries/filters
- Set up billing alerts at 80% of free tier
Learn more about Estimating API Usage
Working with Platform Limitations
Step 35: Handle Missing Features
Cannot Implement:
- No built-in turn-by-turn routing or traffic layers inside the component
- No real-time background location tracking; update location via actions when users interact
- Map events (drag/idle) aren't exposed as triggers. (Use buttons like "Search this area" to re-query.)
Workarounds:
- Use external map links for navigation
- Update location only on user interaction
- Show static distance calculations
- Link to Google Maps for advanced features
Step 36: Platform-Specific Considerations
iOS:
- Location permission is requested by your Request Location Permissions action; handle denial gracefully
- App Store submission requires a privacy policy explaining location use
Android:
- Adalo configures manifests during builds; you don't edit the manifest directly
- Test location accuracy across devices
PWA/Web:
- Browser handles location permissions; HTTPS is required for geolocation
Testing and Launch
Step 37: Test Core Features
- Test on multiple devices:
- Location permission flow
- Map loading and markers
- Search functionality
- Distance calculations
- Test edge cases:
- No location permission
- No internet connection
- Many markers performance
Step 38: Monitor API Usage
- Check Google Cloud Console daily
- Track usage patterns:
- API calls per user
- Most expensive operations
- Peak usage times
- Optimize based on data
Step 39: Prepare for Publishing
- Use Adalo's Starter/Professional/Team/Business plans as needed for publishing and collaboration
- Configure app store settings
- Add required policies:
- Privacy policy (location data usage)
- Terms of service
- Set up support email
Step 40: Launch Considerations
- Start with limited user base
- Monitor API costs closely
- Gather user feedback on limitations
- Include a Privacy Policy that explains location use; for iOS, add required permission text when submitting if prompted
Additional Resources
- Adalo Location Documentation
- Airbnb in 25 Minutes Course
- Location Master Class
- Component Marketplace
- YouTube Tutorials
Important Considerations
Cost Breakdown:
- Use Adalo's Starter/Professional/Team/Business plans as needed (check current Pricing)
- The Maps component is an Adalo Marketplace component; pricing varies by listing
- Google API costs: $200/month free credit
Marketplace Components:
- The Maps component is an Adalo Marketplace component; pricing varies by listing
- Additional components available for enhanced functionality
API Cost Management:
- Prefer stored coordinates over re-geocoding addresses
- Cache recent searches & popular places to reduce calls
- Monitor usage in Google Cloud; set billing alerts
- See Estimating API Usage for Adalo-specific guidance
Note: This Google Maps clone will provide core mapping and location search functionality within Adalo's constraints. While it won't match Google Maps' advanced features like real-time navigation or traffic data, it serves as a solid foundation for location-based discovery apps, business directories, and local search platforms.
‍










