You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Web应用开发:Google Places API地点搜索结果处理疑问

Handling Google Places Nearby Search API Response Data

Hey there! Let's break down how to work with the response data from the Google Places Nearby Search API, using your existing request code as a starting point.

First, it helps to understand the structure of the JSON response you'll get. The core of the data is the results array—each entry in this array is an object representing a place that matches your search criteria. Each place object has key fields you'll likely care about, like:

  • name: The official name of the place
  • vicinity: A human-readable address snippet (great for displaying to users)
  • geometry.location: An object with lat (latitude) and lng (longitude) coordinates
  • place_id: A unique identifier for the place (useful if you want to fetch more details later with the Place Details API)

Here's how to modify your jQuery code to process this data effectively:

var theUrl = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=restaurant&keyword=cruise&key=myHiddenKey";

$.get(theUrl, function(data) {
  // First, validate the API request status
  if (data.status === "OK") {
    // Loop through each matching place
    data.results.forEach(function(place) {
      // Extract the details you need
      const placeName = place.name;
      const placeAddress = place.vicinity;
      const [placeLat, placeLng] = [place.geometry.location.lat, place.geometry.location.lng];
      const placeId = place.place_id;

      // Example 1: Log details to the console for debugging
      console.log(`Found: ${placeName} | Address: ${placeAddress} | Coords: (${placeLat}, ${placeLng})`);

      // Example 2: Render results to your web page (assuming you have a <ul id="places-list"> in your HTML)
      $('#places-list').append(`
        <li>
          <strong>${placeName}</strong>
          <br>
          ${placeAddress}
          <br>
          Coordinates: ${placeLat}, ${placeLng}
        </li>
      `);
    });

    // Handle pagination if there are more results
    if (data.next_page_token) {
      // Google requires a short delay before requesting the next page (2 seconds is safe)
      setTimeout(() => {
        const nextPageUrl = `${theUrl}&pagetoken=${data.next_page_token}`;
        $.get(nextPageUrl, function(nextPageData) {
          // Repeat the same processing logic for the next set of results
          nextPageData.results.forEach(function(place) {
            // Do something with each place here
          });
        });
      }, 2000);
    }
  } else {
    // Handle error scenarios
    console.error(`API request failed: ${data.status}`);
    if (data.error_message) {
      console.error(`Details: ${data.error_message}`);
    }
    // Common error statuses to watch for:
    // - ZERO_RESULTS: No places matched your criteria
    // - OVER_QUERY_LIMIT: You've exceeded your API quota
    // - INVALID_REQUEST: Missing parameters or invalid key
  }
});

Key Notes to Keep in Mind:

  • Status Checks: Always validate the status field first—this tells you if the request succeeded, failed, or returned no results.
  • Pagination: The API returns a maximum of 20 results per request. If there are more results, you'll get a next_page_token—use this to fetch additional pages, but make sure to add a delay (Google enforces this to prevent abuse).
  • Security: If you're using this in a public-facing web app, avoid exposing your API key directly in frontend code. Instead, set up a backend proxy to handle the API request and forward the response to your frontend.

内容的提问来源于stack exchange,提问作者Albin wärme

火山引擎 最新活动