You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Places Map API实现商户定位网站的技术求助

Step-by-Step Guide to Build Your Merchant Lookup Site with Google Places & Maps APIs

Hey there! I’ve built similar tools before, so let’s walk through this step by step—no jargon, just actionable steps to get your site up and running smoothly.

1. First, Get Your API Keys & Enable Required Tools

Head over to the Google Cloud Console and:

  • Enable the Maps JavaScript API (this renders the interactive map)
  • Enable the Places API (this handles merchant searches and location autocomplete)
  • Generate an API key, and make sure to restrict it to your domain (prevents unauthorized use—super important for keeping costs in check!)

2. Set Up Your Basic HTML Structure

Start with a simple page that has your two input fields and a map container. Here’s a quick, working example:

<!DOCTYPE html>
<html>
<head>
    <title>Merchant Finder</title>
    <style>
        #map { height: 450px; width: 100%; margin-top: 20px; }
        .search-bar { margin: 20px; }
        input { padding: 10px; width: 320px; margin-right: 15px; border: 1px solid #ddd; border-radius: 4px; }
        button { padding: 10px 20px; background: #4285F4; color: white; border: none; border-radius: 4px; cursor: pointer; }
    </style>
</head>
<body>
    <div class="search-bar">
        <input type="text" id="merchantType" placeholder="Enter merchant type (e.g., café, bookstore)">
        <input type="text" id="locationInput" placeholder="Enter location (e.g., Chicago)">
        <button onclick="searchMerchants()">Find Merchants</button>
    </div>
    <div id="map"></div>

    <!-- Load Google Maps API with your key + Places library -->
    <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script>
    <script src="app.js"></script>
</body>
</html>

Don’t forget to replace YOUR_API_KEY with the key you generated earlier.

3. Add Location Autocomplete (For Smarter User Input)

Let’s make the location input more user-friendly with autocomplete—this ensures users enter valid places and gives us precise coordinates. Add this to your app.js:

let map;
let autocomplete;
let userLocation;

// Initialize map and autocomplete when the page loads
function initMap() {
    // Start with a default map (you can set this to any location)
    map = new google.maps.Map(document.getElementById('map'), {
        center: { lat: 41.8781, lng: -87.6298 }, // Chicago as default
        zoom: 12
    });

    // Set up autocomplete for location input
    autocomplete = new google.maps.places.Autocomplete(
        document.getElementById('locationInput'),
        { types: ['geocode'] } // Restrict to geographic locations only
    );

    // Store coordinates when a user selects a place
    autocomplete.addListener('place_changed', () => {
        const place = autocomplete.getPlace();
        if (!place.geometry || !place.geometry.location) {
            alert("Please pick a valid location from the dropdown");
            return;
        }
        userLocation = place.geometry.location;
        // Center map on the selected location
        map.setCenter(userLocation);
        map.setZoom(14);
    });
}

// Hook initMap to run when the Google Maps script loads
window.initMap = initMap;

4. Implement Merchant Search with Nearby Search API

Now, write the searchMerchants function that takes the user’s input, fetches matching merchants, and marks them on the map:

// Store markers to clear them between searches
let markers = [];

function searchMerchants() {
    const merchantType = document.getElementById('merchantType').value.trim();
    if (!merchantType || !userLocation) {
        alert("Please enter both a merchant type and select a valid location");
        return;
    }

    // Use Places Nearby Search to find matching merchants
    const service = new google.maps.places.PlacesService(map);
    service.nearbySearch({
        location: userLocation,
        radius: 6000, // Search within 6km (adjust this as needed)
        type: merchantType.toLowerCase() // Google expects lowercase place types
    }, (results, status) => {
        if (status === google.maps.places.PlacesServiceStatus.OK) {
            clearMarkers(); // Remove old markers first
            // Add a marker for each merchant result
            results.forEach(place => {
                createMerchantMarker(place);
            });
        } else {
            alert(`No results found: ${status}`);
        }
    });
}

function createMerchantMarker(place) {
    const marker = new google.maps.Marker({
        map: map,
        position: place.geometry.location,
        title: place.name,
        icon: 'https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/restaurant-71.png' // Custom icon (optional)
    });

    // Add an info window with merchant details
    const infoWindow = new google.maps.InfoWindow({
        content: `
            <h3>${place.name}</h3>
            <p>${place.vicinity}</p>
            ${place.rating ? `<p>Rating: ${place.rating}/5</p>` : ''}
            ${place.price_level ? `<p>Price level: ${'$'.repeat(place.price_level)}</p>` : ''}
        `
    });

    marker.addListener('click', () => {
        infoWindow.open(map, marker);
    });

    markers.push(marker);
}

function clearMarkers() {
    markers.forEach(marker => marker.setMap(null));
    markers = [];
}

5. Test & Tweak

  • Replace YOUR_API_KEY with your actual key and test with different merchant types (like gas_station, library, bakery)
  • Adjust the radius value in the nearbySearch call to make results more or less broad
  • If you’re getting no results for a specific type, double-check that it matches Google’s supported place types (you can find these in the official Places API docs)

Quick Troubleshooting Tips

  • Map not loading? Ensure your API key is correctly restricted and both APIs are enabled in the Cloud Console
  • Autocomplete not working? Make sure you included the libraries=places parameter in the Maps API script URL
  • No results? Verify the location is valid and the merchant type uses Google’s exact terminology (e.g., bar instead of pub might work better)

内容的提问来源于stack exchange,提问作者FashMuyhee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:46:02