Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Nhà phát triển ở Khu vực kinh tế Châu Âu (EEA)
Trang này giải thích sự khác biệt giữa tính năng tìm kiếm lân cận được dùng trong lớp Place (mới) và PlacesService (cũ), đồng thời cung cấp một số đoạn mã để so sánh.
PlacesService cũ có phương thức nearbySearch(), cho phép bạn tìm kiếm địa điểm trong một khu vực cụ thể theo từ khoá hoặc loại.
Lớp Place có một phương thức searchNearby() cho phép bạn tìm kiếm các địa điểm trong một khu vực cụ thể theo loại địa điểm, sử dụng một lựa chọn mở rộng về các trường dữ liệu địa điểm và loại địa điểm để có tính linh hoạt cao hơn.
Bảng sau đây liệt kê một số điểm khác biệt chính trong các phương thức tìm kiếm lân cận giữa lớp Place và PlacesService:
Phần này so sánh mã cho các phương thức tìm kiếm lân cận để minh hoạ sự khác biệt giữa Places Service và lớp Place. Các đoạn mã cho thấy mã cần thiết trên mỗi API tương ứng để thực hiện một yêu cầu tìm kiếm dựa trên văn bản.
Nearby Search (Cũ)
Tính năng Tìm kiếm lân cận cũ cho phép bạn tìm kiếm địa điểm trong một khu vực cụ thể theo từ khoá hoặc loại. Không có cách nào để hạn chế các lượt tìm kiếm bằng cách sử dụng các trường dữ liệu về địa điểm, do đó, tất cả các trường có sẵn đều được trả về cùng với mỗi yêu cầu.
Đoạn mã sau cho thấy cách gọi nearbySearch() để trả về thông tin về các nhà hàng ở Sydney, Úc. Yêu cầu này là đồng bộ, sử dụng một lệnh gọi lại và bao gồm một quy trình kiểm tra có điều kiện bắt buộc trên PlacesServiceStatus.
letmap;letservice;functioninitMap(){constsydney=newgoogle.maps.LatLng(-33.867,151.195);map=newgoogle.maps.Map(document.getElementById("map"),{center:sydney,zoom:15,});constrequest={location:sydney,radius:'500',type:['restaurant']};service=newgoogle.maps.places.PlacesService(map);service.nearbySearch(request,callback);}functioncallback(results,status){if(status==google.maps.places.PlacesServiceStatus.OK){for(vari=0;i < results.length;i++){createMarker(results[i]);}}}// Helper function to create markers.functioncreateMarker(place){if(!place.geometry||!place.geometry.location)return;constmarker=newgoogle.maps.Marker({map,position:place.geometry.location,title:place.name,});}
Phiên bản mới của Nearby Search (Tìm kiếm lân cận) có những điểm cải tiến so với phiên bản cũ như sau:
Khả năng chỉ định những trường dữ liệu địa điểm cần trả về.
Sử dụng Promise để cho phép hoạt động không đồng bộ.
Không cần kiểm tra trạng thái của PlacesService; thay vào đó, bạn có thể sử dụng tính năng xử lý lỗi tiêu chuẩn.
Đoạn mã sau đây cho thấy một hàm tạo yêu cầu Tìm kiếm lân cận cho nhà hàng. Ví dụ này cho thấy cách sử dụng lựa chọn rankPreference để xếp hạng kết quả tìm kiếm theo mức độ phổ biến (trong phiên bản trước, thứ hạng được chỉ định bằng lựa chọn rankBy). Vì phương thức searchNearby() sử dụng toán tử await nên bạn chỉ có thể dùng phương thức này bên trong hàm async.
asyncfunctionnearbySearch(){// Restrict within the map viewport.letcenter=newgoogle.maps.LatLng(52.369358,4.889258);constrequest={// Required parameters.fields:["displayName","location","businessStatus"],locationRestriction:{center:center,radius:500,},// Optional parameters.includedPrimaryTypes:["restaurant"],maxResultCount:5,rankPreference:google.maps.places.SearchNearbyRankPreference.POPULARITY,language:"en-US",region:"us",};const{places}=awaitgoogle.maps.places.Place.searchNearby(request);if(places.length){console.log(places);// Create a new bounds, which will be extended with each result.constbounds=newgoogle.maps.LatLngBounds();// Loop through and get all the results.places.forEach((place)=>{constmarkerView=newgoogle.maps.marker.AdvancedMarkerElement({map,position:place.location,title:place.displayName,});bounds.extend(place.location);console.log(place);});map.fitBounds(bounds);}else{console.log("No results");}}
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-09-05 UTC."],[],[],null,["# Migrate to the new Nearby Search\n\n\u003cbr /\u003e\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nThis page explains the differences between nearby search as used in the\n[`Place`](/maps/documentation/javascript/reference/place) class (new) and the\n[`PlacesService`](/maps/documentation/javascript/reference/places-service)\n(legacy), and provides some code snippets for comparison.\n\n- The legacy `PlacesService` has a `nearbySearch()` method, which lets you search for places within a specified area by keyword or type.\n- The `Place` class has a `searchNearby()` method which lets you search for places within a specified area by place type, utilizing an expanded selection of place data fields and place types for greater flexibility.\n\nThe following table lists some of the main differences in nearby search methods\nbetween the `Place` class and `PlacesService`:\n\n| [`PlacesService`](/maps/documentation/javascript/reference/places-service) (Legacy) | [`Place`](/maps/documentation/javascript/reference/place) (New) |\n|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [`nearbySearch()`](/maps/documentation/javascript/reference/places-service#PlacesService.nearbySearch) | [`searchNearby()`](/maps/documentation/javascript/reference/place#Place.searchNearby) |\n| [`PlaceSearchRequest`](/maps/documentation/javascript/reference/places-service#PlaceSearchRequest) | [`SearchNearbyRequest`](/maps/documentation/javascript/reference/place#SearchNearbyRequest) |\n| Requires the use of a callback to handle the results object and `google.maps.places.PlacesServiceStatus` response. | Uses Promises, and works asynchronously. |\n| Requires a `PlacesServiceStatus` check. | No required status check, can use standard error handling. [Learn more](/maps/documentation/javascript/reference/errors). |\n| Supports only location bias. | Supports location bias and location restriction. |\n| Returns all available data fields (a [subset of the supported fields](/maps/documentation/places/web-service/place-data-fields#places-api-fields-support)); cannot be constrained to specific fields. | Returns only the requested [place data fields](/maps/documentation/javascript/place-class-data-fields); the `Place` class offers an expanded and regularly updated selection of fields. |\n| Limited to a fixed set of [place types](/maps/documentation/javascript/supported_types). | Access an expanded and regularly updated selection of [place types](/maps/documentation/javascript/place-types). |\n| Supported text-based search with the [keyword](/maps/documentation/javascript/reference/places-service#PlaceSearchRequest.keyword). | Text-based search is not supported, use [Text Search (New)](/maps/documentation/javascript/places-migration-search#place-class-new) instead. |\n\nCode comparison\n---------------\n\nThis section compares code for nearby search methods to illustrate the\ndifferences between the Places Service and the\nPlace class. The code snippets show the code\nrequired on each respective API to make a text-based search request.\n\n### Nearby Search (Legacy)\n\nThe legacy Nearby Search lets you search for places within a specified area by\nkeyword or type. There is no way to constrain searches by using place data\nfields, so that all of the available fields are returned with each request.\nThe following snippet shows calling `nearbySearch()` to return information about\nrestaurants in Sydney, Australia. The request is synchronous, uses a callback,\nand includes a required conditional check on `PlacesServiceStatus`. \n\n let map;\n let service;\n\n function initMap() {\n const sydney = new google.maps.LatLng(-33.867, 151.195);\n\n map = new google.maps.Map(document.getElementById(\"map\"), {\n center: sydney,\n zoom: 15,\n });\n\n const request = {\n location: sydney,\n radius: '500',\n type: ['restaurant']\n };\n\n service = new google.maps.places.PlacesService(map);\n service.nearbySearch(request, callback);\n }\n\n function callback(results, status) {\n if (status == google.maps.places.PlacesServiceStatus.OK) {\n for (var i = 0; i \u003c results.length; i++) {\n createMarker(results[i]);\n }\n }\n }\n\n // Helper function to create markers.\n function createMarker(place) {\n if (!place.geometry || !place.geometry.location) return;\n\n const marker = new google.maps.Marker({\n map,\n position: place.geometry.location,\n title: place.name,\n });\n }\n\n#### Learn more\n\n- [See the documentation for legacy Nearby Search](/maps/documentation/javascript/places#place_search_requests)\n- [See the `searchNearby()` reference](/maps/documentation/javascript/reference/places-service#PlacesService.nearbySearch)\n\n### Nearby Search (New)\n\nThe new version of Nearby Search improves upon its predecessor in the following\nways:\n\n- The ability to specify which place data fields to return.\n- The use of Promises which enables asynchronous operation.\n- No need to check for the status of `PlacesService`; standard error handling can be used instead.\n\nThe following code snippet shows a function which makes a Nearby Search request\nfor restaurants. This example shows using the `rankPreference` option to rank\nsearch results by popularity (in the previous version ranking is specified\nusing the `rankBy` option). Because the `searchNearby()` method uses the `await`\noperator it can only be used inside an `async` function. \n\n async function nearbySearch() {\n // Restrict within the map viewport.\n let center = new google.maps.LatLng(52.369358, 4.889258);\n const request = {\n // Required parameters.\n fields: [\"displayName\", \"location\", \"businessStatus\"],\n locationRestriction: {\n center: center,\n radius: 500,\n },\n // Optional parameters.\n includedPrimaryTypes: [\"restaurant\"],\n maxResultCount: 5,\n rankPreference: google.maps.places.SearchNearbyRankPreference.POPULARITY,\n language: \"en-US\",\n region: \"us\",\n };\n\n const { places } = await google.maps.places.Place.searchNearby(request);\n\n if (places.length) {\n console.log(places);\n\n // Create a new bounds, which will be extended with each result.\n const bounds = new google.maps.LatLngBounds();\n\n // Loop through and get all the results.\n places.forEach((place) =\u003e {\n const markerView = new google.maps.marker.AdvancedMarkerElement({\n map,\n position: place.location,\n title: place.displayName,\n });\n\n bounds.extend(place.location);\n console.log(place);\n });\n map.fitBounds(bounds);\n } else {\n console.log(\"No results\");\n }\n }\n\n#### Learn more\n\n- [See the complete example code](/maps/documentation/javascript/examples/place-nearby-search)\n- [See the documentation for Nearby Search (New)](/maps/documentation/javascript/nearby-search)\n- [See the `searchNearby()` reference](/maps/documentation/javascript/reference/place#Place.searchNearby)"]]