What Is Nearby
This example demonstrates how to discover all nearby landmarks around the user's current position or a default location.
Live Demo
Overview
This example shows how to:
- Request location permissions and access current position
- Search for nearby landmarks across all categories
- Display results in a scrollable modal with distance information
- Navigate and highlight landmarks on the map
- Handle cases where location is unavailable (fallback to default position)
Code Implementation
Imports
First, import the required modules from the SDK:
import {
GemKit,
GemMap,
Coordinates,
PositionService,
SearchService,
SearchPreferences,
Landmark,
GemError,
GemAnimation,
AnimationType,
GenericCategories,
HighlightRenderSettings,
HighlightOptions,
ImageFileFormat,
GemIcon
} from '@magiclane/maps-sdk';
Setup State and Default Position
Initialize global variables and default location:
Request Location Permission
Get user's current location with permission handling:
Initialize Map and UI
Setup the map view and UI elements:
Search for Nearby Locations
Query all nearby landmarks across all categories:
Perform Search and Display Results
Execute search and show results in a sidebar:
Render Search Results
Display landmarks in sidebar with highlight functionality:
Key Features
- Location Permission: Request and handle location permissions using
PositionService.requestLocationPermission() - Live Position Tracking: Set live data source and follow user position with animations
- Comprehensive Search: Search across all landmark categories using
GenericCategories.categories - Search Around Position: Use
SearchService.searchAroundPosition()to find nearby landmarks - Interactive Highlights: Highlight selected landmarks on map with
HighlightRenderSettings - Distance Calculation: Calculate and display distances using
Coordinates.distance() - Fallback Position: Gracefully handle denied permissions with default location
Explanation of Key Components
- PositionService: Manages location permissions and provides current user position
- SearchPreferences: Configure search parameters including categories and maximum results
- GenericCategories: Access all available landmark category types for comprehensive search
- SearchService.searchAroundPosition(): Search for landmarks within radius of a position
- HighlightRenderSettings: Control how landmarks are highlighted on the map
- GemIcon.searchResultsPin: Set custom pin icon for highlighted landmarks
Next Steps
- Search Location - Search for specific locations by name
- Text Search - Perform text-based landmark searches
- Search Along Route - Find landmarks along a calculated route