# Google Maps

> Place search, directions, geocoding, and interactive maps

- Skill: `aws-samples/google-maps` (Agent Skill)
- Install (CLI): `npx skillmds@latest add aws-samples/google-maps`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aws-samples/google-maps/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: aws-samples (https://skillmd.com/u/aws-samples)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/aws-samples/google-maps

---


# Google Maps

## Available Tools

- **search_places(query, location?, radius?, type?, open_now?, language?)**: Search for places using text query.
  - `query` (string, required): Search text (e.g., "restaurants in Seoul")
  - `location` (string, optional): Center location as "lat,lng" (e.g., "37.5665,126.9780")
  - `radius` (integer, optional): Search radius in meters (max 50,000)
  - `type` (string, optional): Place type filter (e.g., "restaurant", "tourist_attraction", "hotel")
  - `open_now` (boolean, optional, default: false): Only return currently open places
  - `language` (string, optional, default: "en"): Language code

- **search_nearby_places(location, radius, keyword?, type?, rank_by?, open_now?, language?)**: Search near specific coordinates.
  - `location` (string, required): Center as "lat,lng" (e.g., "37.5665,126.9780")
  - `radius` (integer, required): Search radius in meters (max 50,000)
  - `keyword` (string, optional): Search keyword
  - `type` (string, optional): Place type filter
  - `rank_by` (string, optional, default: "prominence"): "prominence" or "distance"
  - `open_now` (boolean, optional, default: false): Only open places
  - `language` (string, optional, default: "en"): Language code

- **get_place_details(place_id, language?)**: Get detailed place info including reviews and hours.
  - `place_id` (string, required): Place ID from search results
  - `language` (string, optional, default: "en"): Language code

- **get_directions(origin, destination, mode?, alternatives?, avoid?, language?)**: Get directions between two locations.
  - `origin` (string, required): Starting point (address or "lat,lng")
  - `destination` (string, required): Destination (address or "lat,lng")
  - `mode` (string, optional, default: "driving"): "driving", "walking", "bicycling", "transit"
  - `alternatives` (boolean, optional, default: false): Return alternative routes
  - `avoid` (string, optional): "tolls", "highways", or "ferries"
  - `language` (string, optional, default: "en"): Language code

- **geocode_address(address, language?, region?)**: Convert a text address to geographic coordinates.
  - `address` (string, required): Address to geocode
  - `language` (string, optional, default: "en"): Language code
  - `region` (string, optional): Country code for regional bias

- **reverse_geocode(latlng, language?)**: Convert coordinates to a human-readable address.
  - `latlng` (string, required): Coordinates as "lat,lng" (e.g., "37.5665,126.9780")
  - `language` (string, optional, default: "en"): Language code

- **show_on_map(map_type, markers?, directions?, center?, zoom?)**: Display locations or routes on an interactive map.
  - `map_type` (string, required): "markers" (location pins), "directions" (route), or "area"
  - `markers` (array, required for "markers"): List of marker objects with lat, lng
  - `directions` (object, required for "directions"): Route data with origin and destination
  - `center` (object, optional): Map center {lat, lng}
  - `zoom` (integer, optional): Zoom level 1-20

## Usage Guidelines

- **ALWAYS call show_on_map** after collecting location data — visual maps are the primary value.
- Preserve `place_id` from search results for use with `get_place_details`.
- Infer transportation mode from context (driving for long distances, walking for short ones).
- Show 1-5 most relevant places per map.

## Response Pattern

Follow the **Text -> Map -> Text** sequence. Do NOT call `show_on_map` in parallel with other tool calls.

1. **Text**: Introduce what you'll show
2. **Map**: Call `show_on_map` to display results
3. **Text**: Explain the results

**Multiple categories**: Use separate maps in sequence — never parallel.

## Output Rules

The map renders visually from the tool result — never echo or paraphrase the raw `map_data` JSON (type, center, zoom, markers, lat/lng) in your text response. Describe places in natural language only (names, ratings, brief notes). The user already sees the map; do not repeat its contents.

## UI Guidance (from tools-config)

**When to Use:**
- ALWAYS call show_on_map after collecting location data - visual maps are the primary value
- Use for: search results, directions, comparisons, or any location-based query

**Response Pattern (DO NOT call show_on_map in parallel):**
1. Text: Introduce what you'll show ("Here are the top restaurants:")
2. show_on_map: Display the map
3. Text: Explain the results ("These restaurants are rated 4.5+ stars")

Example:
- "Let me show you restaurants in Gangnam:" → show_on_map(restaurants) → "All 5 restaurants above have excellent reviews."
- For multiple categories: Text → Map 1 → Text → Map 2 (sequential, not parallel)

**Map Organization:**
- Separate maps for different categories (restaurants vs hotels)
- Show 1-5 most relevant places per map

**Tool Selection:**
- search_places: text queries | search_nearby_places: coordinates
- Preserve place_id for details | Infer direction mode from context

**Output Rules:**
- The map is rendered visually by the UI from the tool result. NEVER echo, paraphrase, or include the raw map_data JSON (coordinates, markers, zoom, type) in your text response.
- Describe locations in natural language only (names, ratings, brief notes). The user already sees the map — do not repeat its contents.

