""" Example usage of Google Maps Platform tools in EvoAgentX This example demonstrates how to use the various Google Maps tools for geocoding, places search, directions, and more. Prerequisites: 1. Google Maps Platform API key with the following APIs enabled: - Geocoding API - Places API - Directions API - Distance Matrix API - Time Zone API 2. Set your API key as an environment variable: export GOOGLE_MAPS_API_KEY="your_api_key_here" Note: The GoogleMapsToolkit will automatically retrieve the API key from the environment variable, making it compatible with AI agents. """ import os from evoagentx.tools import GoogleMapsToolkit def main(): # Initialize the toolkit - API key will be automatically retrieved from environment gmaps_toolkit = GoogleMapsToolkit() # Check if API key is available if not gmaps_toolkit.google_maps_base.api_key: print("Please set GOOGLE_MAPS_API_KEY environment variable") print("Get your API key from: https://console.cloud.google.com/apis/") return print("=== Google Maps Platform Tools Demo ===\n") # 1. Geocoding - Convert address to coordinates print("1. Geocoding Address to Coordinates") geocode_tool = gmaps_toolkit.get_tool("geocode_address") result = geocode_tool(address="1600 Amphitheatre Parkway, Mountain View, CA") if result["success"]: print(f"Address: {result['formatted_address']}") print(f"Coordinates: {result['latitude']}, {result['longitude']}") print(f"Place ID: {result['place_id']}") # Store coordinates for other examples lat, lng = result['latitude'], result['longitude'] else: print(f"Geocoding failed: {result['error']}") return print("\n" + "="*50 + "\n") # 2. Reverse Geocoding - Convert coordinates to address print("2. Reverse Geocoding Coordinates to Address") reverse_geocode_tool = gmaps_toolkit.get_tool("reverse_geocode") result = reverse_geocode_tool(latitude=lat, longitude=lng) if result["success"]: print(f"Coordinates: {result['latitude']}, {result['longitude']}") print("Addresses found:") for i, addr in enumerate(result['addresses'][:3]): # Show first 3 print(f" {i+1}. {addr['formatted_address']}") else: print(f"Reverse geocoding failed: {result['error']}") print("\n" + "="*50 + "\n") # 3. Places Search - Find nearby restaurants print("3. Places Search - Find Restaurants") places_search_tool = gmaps_toolkit.get_tool("places_search") result = places_search_tool( query="restaurants near Mountain View, CA", location=f"{lat},{lng}", radius=2000 ) if result["success"]: print(f"Found {result['places_found']} restaurants") for i, place in enumerate(result['places'][:3]): # Show first 3 print(f" {i+1}. {place['name']}") print(f" Address: {place['formatted_address']}") print(f" Rating: {place.get('rating', 'N/A')}") print(f" Place ID: {place['place_id']}") # Store a place ID for details example if result['places']: sample_place_id = result['places'][0]['place_id'] else: print(f"Places search failed: {result['error']}") sample_place_id = None print("\n" + "="*50 + "\n") # 4. Place Details - Get detailed info about a place if sample_place_id: print("4. Place Details - Restaurant Information") place_details_tool = gmaps_toolkit.get_tool("place_details") result = place_details_tool(place_id=sample_place_id) if result["success"]: print(f"Name: {result['name']}") print(f"Address: {result['formatted_address']}") print(f"Phone: {result.get('phone_number', 'N/A')}") print(f"Website: {result.get('website', 'N/A')}") print(f"Rating: {result.get('rating', 'N/A')} ({result.get('user_ratings_total', 0)} reviews)") print(f"Price Level: {result.get('price_level', 'N/A')}") else: print(f"Place details failed: {result['error']}") print("\n" + "="*50 + "\n") # 5. Directions - Get driving directions print("5. Directions - Driving Route") directions_tool = gmaps_toolkit.get_tool("directions") result = directions_tool( origin="San Francisco, CA", destination="Mountain View, CA", mode="driving" ) if result["success"] and result['routes']: route = result['routes'][0] print(f"Route from {result['origin']} to {result['destination']}") print(f"Distance: {route['total_distance_meters']} meters") print(f"Duration: {route['total_duration_seconds']} seconds") print(f"Summary: {route.get('summary', 'N/A')}") # Show first few steps if route['legs'] and route['legs'][0]['steps']: print("First 3 steps:") for i, step in enumerate(route['legs'][0]['steps'][:3]): # Remove HTML tags from instructions (simple approach) instructions = step['instructions'].replace('', '').replace('', '').replace('