Thư viện địa điểm

Chọn nền tảng: Android iOS JavaScript Dịch vụ web

Tổng quan

Các hàm trong Thư viện địa điểm, Maps JavaScript API cho phép ứng dụng của bạn để tìm kiếm địa điểm (được định nghĩa trong API này là các cơ sở, địa lý vị trí hoặc địa điểm ưa thích nổi bật) nằm trong một khu vực xác định, chẳng hạn như ranh giới của bản đồ hoặc xung quanh một điểm cố định.

API địa điểm cung cấp tính năng tự động hoàn thành mà bạn có thể sử dụng để cung cấp cho ứng dụng của bạn hành vi tìm kiếm nhập trước của Google Maps trường tìm kiếm. Khi người dùng bắt đầu nhập địa chỉ, tính năng tự động hoàn thành sẽ điền phần còn lại. Để biết thêm thông tin, hãy xem tự động hoàn thành .

Bắt đầu

Nếu bạn không quen với API Maps JavaScript hoặc JavaScript, bạn nên xem xét JavaScript và Nhận Khoá API trước để bắt đầu.

Bật API

Trước khi sử dụng thư viện Địa điểm trong API Maps JavaScript, trước tiên hãy đảm bảo mà API Địa điểm được bật trong Google Cloud Console, trong cùng một dự án bạn thiết lập cho API Maps JavaScript.

Cách xem danh sách API đã bật:

  1. Chuyển đến Bảng điều khiển Google Cloud.
  2. Nhấp vào nút Select a project (Chọn dự án), rồi chọn chính dự án mà bạn đã thiết lập cho API Maps JavaScript rồi nhấp vào Mở.
  3. Trong danh sách API trên Trang tổng quan, hãy tìm API Địa điểm.
  4. Nếu bạn thấy Places API trong danh sách thì có nghĩa là Places API đã được bật. Nếu API không có trong danh sách, hãy bật tuỳ chọn này:
    1. Ở đầu trang, hãy chọn BẬT API VÀ DỊCH VỤ để hiển thị Thẻ Thư viện. Ngoài ra, từ trình đơn bên trái, hãy chọn Thư viện.
    2. Tìm kiếm API Địa điểm, sau đó chọn API đó từ danh sách kết quả.
    3. Chọn BẬT. Khi quá trình này kết thúc, API Địa điểm xuất hiện trong danh sách API trên Trang tổng quan.

Đang tải thư viện

Dịch vụ Địa điểm là một thư viện độc lập, tách biệt với dịch vụ Mã API JavaScript cho Maps. Để sử dụng chức năng có trong đó trong thư viện này, thì trước tiên, bạn phải tải thư viện bằng libraries trong URL khởi động của API Maps:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>

Hãy xem Tổng quan về thư viện để biết thêm thông tin.

Thêm Places API vào danh sách hạn chế API của khoá API

Việc áp dụng các quy tắc hạn chế API cho khoá của bạn sẽ giới hạn việc sử dụng khoá API ở một hoặc API hoặc SDK khác. Các yêu cầu đối với một API hoặc SDK liên kết với khoá API này sẽ được xử lý. Các yêu cầu đối với một API hoặc SDK không liên kết với khoá API này sẽ không thành công. Để hạn chế một khoá API sử dụng với Thư viện địa điểm, Maps JavaScript API:
  1. Truy cập vào Google Cloud Console.
  2. Nhấp vào trình đơn thả xuống dự án rồi chọn dự án có chứa Khoá API mà bạn muốn bảo mật.
  3. Nhấp vào nút trình đơn và chọn Nền tảng Google Maps > Thông tin đăng nhập.
  4. Trên trang Thông tin đăng nhập, nhấp vào tên của API mà bạn muốn bảo mật.
  5. Trên trang Hạn chế và đổi tên khoá API, hãy đặt các hạn chế:
    • Các hạn chế đối với API
      • Chọn Hạn chế khoá.
      • Nhấp vào Select API (Chọn API) rồi chọn cả Maps JavaScript API Places API.
        (Nếu một trong hai API không được liệt kê, bạn cần phải bật API đó.)
  6. Nhấp vào LƯU.

Chính sách và hạn mức sử dụng

Hạn mức

Thư viện địa điểm chia sẻ hạn mức sử dụng với API Địa điểm như mô tả trong tài liệu về Giới hạn sử dụng đối với Places API.

Chính sách

Việc sử dụng Thư viện địa điểm, Maps JavaScript API phải tuân theo các chính sách nêu trên cho Places API.

Tìm kiếm địa điểm

Với dịch vụ Địa điểm, bạn có thể thực hiện các loại tìm kiếm sau:

Thông tin được trả về có thể bao gồm các cơ sở, chẳng hạn như nhà hàng, cửa hàng và văn phòng — cũng như theo "mã địa lý" kết quả, cho biết địa chỉ, khu vực chính trị như thị trấn và thành phố, v.v. địa điểm yêu thích.

Tìm yêu cầu về địa điểm

Yêu cầu Tìm địa điểm cho phép bạn tìm kiếm địa điểm bằng truy vấn văn bản hoặc số điện thoại của họ. Có hai loại yêu cầu Tìm địa điểm:

Tìm địa điểm từ truy vấn

Dịch vụ Tìm địa điểm từ truy vấn sẽ nhập văn bản và trả về một địa điểm. Đầu vào có thể là bất kỳ loại dữ liệu Địa điểm nào, ví dụ như tên hoặc địa chỉ doanh nghiệp. Để làm cho Tìm Địa điểm từ yêu cầu Truy vấn, gọi hàm PlacesService findPlaceFromQuery() , nhận các tham số sau:

  • query (bắt buộc) Chuỗi văn bản mà bạn muốn tìm kiếm ví dụ: "nhà hàng" hoặc "123 Main Street". Đây phải là tên địa điểm, địa chỉ hoặc loại cơ sở. Mọi loại dữ liệu đầu vào khác đều có thể tạo và không thể đảm bảo sẽ trả về kết quả hợp lệ. Places API (API Địa điểm) sẽ trả về các kết quả phù hợp với đề xuất dựa trên chuỗi này và sắp xếp kết quả dựa trên mức độ liên quan mà họ cảm nhận được.
  • fields (bắt buộc) Một hoặc nhiều trường chỉ định loại dữ liệu Địa điểm cần trả về.
  • locationBias (không bắt buộc) Toạ độ xác định khu vực cần tìm kiếm. Đây có thể là một trong những sau:

Bạn cũng phải truyền một phương thức gọi lại đến findPlaceFromQuery(), để xử lý đối tượng kết quả và google.maps.places.PlacesServiceStatus của bạn.

Ví dụ sau đây minh hoạ một lệnh gọi đến findPlaceFromQuery(): tìm kiếm "Bảo tàng Nghệ thuật Đương đại Úc", cũng như bao gồm Trường namegeometry.

var map;
var service;
var infowindow;

function initMap() {
  var sydney = new google.maps.LatLng(-33.867, 151.195);

  infowindow = new google.maps.InfoWindow();

  map = new google.maps.Map(
      document.getElementById('map'), {center: sydney, zoom: 15});

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['name', 'geometry'],
  };

  var service = new google.maps.places.PlacesService(map);

  service.findPlaceFromQuery(request, function(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
      map.setCenter(results[0].geometry.location);
    }
  });
}
Xem ví dụ

Tìm địa điểm từ số điện thoại

Tìm địa điểm từ số điện thoại lấy số điện thoại và trả về một địa điểm. Người nhận thực hiện yêu cầu Tìm địa điểm từ số điện thoại, hãy gọi findPlaceFromPhoneNumber() của PlacesService , nhận các tham số sau:

  • phoneNumber (bắt buộc) Số điện thoại, ở định dạng E.164.
  • fields (bắt buộc) Một hoặc nhiều trường chỉ định loại dữ liệu Địa điểm cần trả về.
  • locationBias (không bắt buộc) Toạ độ xác định khu vực tới tìm kiếm. Đây có thể là một trong những trường hợp sau:

Bạn cũng phải truyền một phương thức gọi lại đến findPlaceFromPhoneNumber(), để xử lý đối tượng kết quả và google.maps.places.PlacesServiceStatus của bạn.

Trường (Phương pháp tìm địa điểm)

Dùng tham số fields để chỉ định một mảng các loại dữ liệu địa điểm cần trả về. Ví dụ: fields: ['formatted_address', 'opening_hours', 'geometry']. Sử dụng dấu chấm khi chỉ định giá trị phức hợp. Ví dụ: opening_hours.weekday_text.

Các trường tương ứng với Kết quả tìm kiếm địa điểm và được chia thành ba danh mục thanh toán: Cơ bản, Liên hệ và Bầu không khí. Các trường cơ bản là được tính ở mức giá cơ bản và không phải chịu thêm khoản phí nào khác. Tiếp xúc và bầu không khí được lập hoá đơn ở mức cao hơn. Xem bảng giá để biết thêm thông tin. Thuộc tính (html_attributions) luôn luôn được trả về cho mọi lệnh gọi, bất kể trường này đã được đã yêu cầu.

Cơ bản

Danh mục Cơ bản bao gồm các trường sau:
business_status, formatted_address, geometry icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (không dùng nữa), photos, place_id, plus_code, types

Lượt liên hệ

Danh mục Người liên hệ bao gồm trường sau: opening_hours
(không dùng nữa trong Thư viện địa điểm, Maps JavaScript API. Sử dụng yêu cầu Chi tiết địa điểm để nhận opening_hours kết quả).

Bầu không khí

Danh mục Bầu không khí bao gồm các trường sau: price_level, rating, user_ratings_total

findPlaceFromQuery() và Mỗi phương thức findPlaceFromPhoneNumber() lấy cùng một tập hợp và có thể trả về cùng một trường trong câu trả lời tương ứng.

Thiết lập sai lệch vị trí (phương pháp Tìm địa điểm)

Dùng tham số locationBias để tạo kết quả ưu tiên cho dịch vụ Tìm địa điểm trong một khu vực cụ thể. Bạn có thể thiết lập locationBias trong các phần sau cách:

Kết quả thiên vị cho một khu vực cụ thể:

locationBias: {lat: 37.402105, lng: -122.081974}

Xác định vùng hình chữ nhật để tìm kiếm:

locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}

Bạn cũng có thể sử dụng LatLngBounds.

Xác định bán kính để tìm kiếm (tính bằng mét), căn giữa vào một khu vực cụ thể:

locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}

Yêu cầu tìm kiếm lân cận

Tính năng Tìm kiếm lân cận cho phép bạn tìm kiếm các địa điểm trong một khu vực cụ thể bằng cách từ khoá hoặc loại. Tìm kiếm lân cận phải luôn bao gồm vị trí. Vị trí này có thể được chỉ định theo một trong hai cách:

  • LatLngBounds.
  • diện tích hình tròn được xác định là tổ hợp của location thuộc tính — xác định tâm của đường tròn là Vật thể LatLng — và bán kính được đo bằng mét.

Tìm kiếm lân cận trên Địa điểm được bắt đầu bằng lệnh gọi đến Phương thức nearbySearch() của PlacesService. Phương thức này sẽ trả về một mảng Đối tượng PlaceResult. Xin lưu ý rằng nearbySearch() phương thức này thay thế phương thức search() kể từ phiên bản 3.9.

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

Phương thức này nhận một yêu cầu có các trường sau:

  • Một trong hai trường hợp sau:
    • bounds, phải là Đối tượng google.maps.LatLngBounds xác định hình chữ nhật khu vực tìm kiếm. Khoảng cách đường chéo tối đa được hỗ trợ cho các giới hạn diện tích khoảng 100.000 m.
    • locationradius; CANNOT TRANSLATE google.maps.LatLng và đối tượng sau sẽ dùng một đối tượng đơn giản số nguyên, biểu thị bán kính của hình tròn tính bằng mét. Tối đa bán kính tối đa là 50.000 mét. Lưu ý rằng khi rankBy được đặt thành KHOẢNG CÁCH, bạn phải chỉ định location nhưng bạn không thể chỉ định radius hoặc bounds.
  • keyword (không bắt buộc) – Cụm từ cần được so khớp cho tất cả các trường có sẵn, bao gồm nhưng không giới hạn ở tên, loại và cũng như đánh giá của khách hàng và nội dung khác của bên thứ ba.
  • minPriceLevelmaxPriceLevel (không bắt buộc) — Giới hạn kết quả chỉ cho những địa điểm trong dải ô được chỉ định. Các giá trị hợp lệ nằm trong khoảng từ 0 (giá cả phải chăng nhất) đến 4 (đắt nhất).
  • Không dùng name nữa. Tương đương với keyword. Giá trị trong trường này được kết hợp với các giá trị trong trường keyword và được chuyển dưới dạng một phần của cùng một chuỗi tìm kiếm.
  • openNow (không bắt buộc) – Một giá trị boolean, cho biết rằng dịch vụ Địa điểm sẽ chỉ trả về những địa điểm mở cửa cho doanh nghiệp tại thời điểm truy vấn được gửi. Các địa điểm không được chỉ định giờ mở cửa trong cơ sở dữ liệu Google Địa điểm sẽ không được được trả về nếu bạn đưa thông số này vào truy vấn của mình. Chế độ cài đặt Từ openNow đến false không có hiệu lực.
  • rankBy (không bắt buộc) – Chỉ định thứ tự trong kết quả nào được liệt kê. Các giá trị có thể có là:
    • google.maps.places.RankBy.PROMINENCE (mặc định). Chiến dịch này sẽ sắp xếp kết quả dựa trên mức độ quan trọng của chúng. Việc xếp hạng sẽ ưu tiên các địa điểm nổi bật trong bán kính đã đặt hơn so với lân cận phù hợp nhưng ít nổi bật hơn. Sự nổi bật có thể là bị ảnh hưởng bởi thứ hạng của một địa điểm trong chỉ mục của Google, mức độ phổ biến trên toàn cầu, và các yếu tố khác. Thời gian google.maps.places.RankBy.PROMINENCE là đã chỉ định, tham số radius là bắt buộc.
    • google.maps.places.RankBy.DISTANCE. Lựa chọn này sắp xếp kết quả theo thứ tự tăng dần theo khoảng cách từ location (bắt buộc). Xin lưu ý rằng bạn không thể chỉ định bounds tùy chỉnh và/hoặc radius. chỉ định RankBy.DISTANCE. Khi bạn chỉ định RankBy.DISTANCE, một hoặc nhiều keyword, name hoặc type là là bắt buộc.
  • type — Hạn chế kết quả cho các địa điểm phù hợp với loại đã chỉ định. Có thể chỉ có một loại đã chỉ định (nếu có nhiều loại được cung cấp, tất cả các loại tuân theo tiêu chí đầu tiên bị bỏ qua). Xem danh sách được hỗ trợ.

Bạn cũng phải truyền một phương thức gọi lại đến nearbySearch() để xử lý đối tượng kết quả và Phản hồi google.maps.places.PlacesServiceStatus.

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    type: ['restaurant']
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

Xem ví dụ

Yêu cầu tìm kiếm văn bản

Dịch vụ Tìm kiếm văn bản của Google Địa điểm là một dịch vụ web trả về thông tin về một nhóm địa điểm dựa trên một chuỗi, ví dụ: "pizza ở New York" hoặc "cửa hàng giày gần Ottawa". Dịch vụ sẽ phản hồi bằng danh sách các địa điểm phù hợp với chuỗi văn bản và bất kỳ sai lệch vị trí nào có . Nội dung phản hồi tìm kiếm sẽ bao gồm một danh sách các địa điểm. Bạn có thể gửi Yêu cầu Chi tiết địa điểm để biết thêm thông tin về bất kỳ địa điểm nào trong của bạn.

Tìm kiếm văn bản được bắt đầu bằng lệnh gọi đến Phương thức textSearch() của PlacesService.

service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);

Phương thức này nhận một yêu cầu có các trường sau:

  • query (bắt buộc) Chuỗi văn bản để tìm kiếm, ví dụ: "nhà hàng" hoặc "123 Main Street". Đây phải là một địa điểm tên, địa chỉ hoặc loại hình cơ sở. Mọi loại dữ liệu đầu vào khác có thể tạo ra lỗi và không đảm bảo sẽ trả về kết quả hợp lệ. Địa điểm sẽ trả về các kết quả phù hợp đề xuất dựa trên chuỗi này và sắp xếp kết quả dựa trên mức độ liên quan mà họ cảm nhận được. Thông số này không bắt buộc nếu tham số type cũng được dùng trong yêu cầu tìm kiếm.
  • Không bắt buộc:
    • openNow – Một giá trị boolean, cho biết rằng dịch vụ Địa điểm sẽ chỉ trả về những địa điểm mở cửa cho doanh nghiệp tại thời điểm truy vấn được gửi. Các địa điểm không được chỉ định giờ mở cửa trong cơ sở dữ liệu Google Địa điểm sẽ không được được trả về nếu bạn đưa thông số này vào truy vấn của mình. Chế độ cài đặt Từ openNow đến false không có hiệu lực.
    • minPriceLevelmaxPriceLevel — Giới hạn kết quả chỉ cho những địa điểm trong mức giá đã chỉ định. Các giá trị hợp lệ nằm trong khoảng từ 0 (giá cả phải chăng nhất) đến 4 (đắt nhất).
    • Một trong hai trường hợp sau:
      • bounds, phải là Đối tượng google.maps.LatLngBounds xác định hình chữ nhật khu vực tìm kiếm. Khoảng cách đường chéo tối đa được hỗ trợ cho các giới hạn diện tích khoảng 100.000 m.
      • locationradius — Bạn có thể sai lệch kết quả sang một vòng tròn xác định bằng cách truyền location và một tham số radius. Thao tác này sẽ hướng dẫn dịch vụ Địa điểm muốn hiển thị kết quả trong đó vòng kết nối. Kết quả nằm ngoài khu vực đã xác định có thể vẫn hiển thị. Vị trí này sẽ lấy một đối tượng google.maps.LatLng và bán kính lấy một số nguyên đơn giản, thể hiện bán kính của hình tròn tính bằng mét. Bán kính tối đa cho phép là 50.000 mét.
    • type — Giới hạn kết quả trong những địa điểm phù hợp loại được chỉ định. Chỉ có thể chỉ định một loại (nếu có nhiều loại loại đã được cung cấp, tất cả các loại theo sau mục nhập đầu tiên đều bị bỏ qua). Xem danh sách các loại được hỗ trợ.

Bạn cũng phải truyền một phương thức gọi lại đến textSearch() để xử lý đối tượng kết quả và Phản hồi google.maps.places.PlacesServiceStatus.

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    query: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

Câu trả lời tìm kiếm

Mã trạng thái

Đối tượng phản hồi PlacesServiceStatus chứa trạng thái của yêu cầu và có thể chứa thông tin gỡ lỗi để giúp bạn theo dõi tại sao yêu cầu địa điểm không thành công. Các giá trị trạng thái có thể có là:

  • INVALID_REQUEST: Yêu cầu này không hợp lệ.
  • OK: Phản hồi chứa kết quả hợp lệ.
  • OVER_QUERY_LIMIT: Trang web đã xem xét yêu cầu hạn mức.
  • REQUEST_DENIED: Trang web không được phép sử dụng PlacesService.
  • UNKNOWN_ERROR: Không thể yêu cầu PlacesService được xử lý do lỗi máy chủ. Yêu cầu có thể thành công nếu bạn thử lại.
  • ZERO_RESULTS: Không tìm thấy kết quả nào cho yêu cầu này.

Kết quả tìm kiếm địa điểm

findPlace(), nearbySearch() và Hàm textSearch() trả về một mảng PlaceResult.

Mỗi đối tượng PlaceResult có thể bao gồm các thuộc tính sau:

  • business_status cho biết hoạt động trạng thái của địa điểm, nếu đó là một doanh nghiệp. Tên này có thể chứa một trong những các giá trị sau:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Nếu không có dữ liệu, hàm business_status sẽ không được trả về.
  • formatted_address là một chuỗi chứa thông tin con người có thể đọc được của địa chỉ này. Thuộc tính formatted_address chỉ là được trả về cho thao tác Tìm kiếm văn bản.

    Thông thường, địa chỉ này tương đương với địa chỉ bưu điện. Lưu ý rằng một số quốc gia khác (chẳng hạn như Vương quốc Anh) không cho phép phân phối địa chỉ bưu chính do các quy định hạn chế về giấy phép.

    Địa chỉ được định dạng bao gồm một hoặc nhiều địa chỉ theo logic thành phần. Ví dụ: địa chỉ "111 8th Avenue, New York, NY" bao gồm các thành phần sau: "111" (số nhà), "Đại lộ số 8" (tuyến đường), "New York" (thành phố) và "NY" (tiểu bang của Hoa Kỳ).

    Không phân tích cú pháp địa chỉ đã định dạng theo phương thức lập trình. Thay vào đó, bạn nên sử dụng các thành phần địa chỉ riêng lẻ, trong đó phản hồi của API còn bao gồm vào trường địa chỉ được định dạng.

  • geometry: Thông tin có liên quan đến hình học của địa điểm. Chiến dịch này bao gồm:
    • location cung cấp vĩ độ và kinh độ của địa điểm.
    • viewport xác định khung nhìn ưu tiên trên bản đồ khi đang xem địa điểm này.
  • permanently_closed (không dùng nữa) là một cờ boolean cho biết liệu địa điểm đã ngừng hoạt động vĩnh viễn hoặc tạm thời (giá trị true). Không sử dụng permanently_closed. Thay vào đó, hãy sử dụng business_status để biết tình trạng hoạt động của doanh nghiệp.
  • plus_code (xem Mở mã vị trímã cộng) là tham chiếu vị trí được mã hoá, lấy từ vĩ độ và kinh độ đại diện cho một diện tích: 1/8000 của độ x 1/8000 của độ (khoảng 14m x 14m ở đường xích đạo) hoặc nhỏ hơn. Plus code có thể được dùng để thay thế cho địa chỉ đường phố ở nơi không tồn tại (nơi toà nhà không được đánh số hoặc đường phố không được đặt tên).

    Plus code được định dạng là một mã toàn cục và một mã phức hợp:

    • global_code là mã vùng gồm 4 ký tự và mã địa phương dài 6 ký tự trở lên (849VCWC8+R9).
    • compound_code là một mã cục bộ dài 6 ký tự trở lên có vị trí rõ ràng (CWC8+R9, Mountain View, CA, Hoa Kỳ). Đừng phân tích cú pháp nội dung này theo phương thức lập trình.
    Thông thường, cả mã toàn cục và mã phức hợp đều được trả về. Tuy nhiên, nếu kết quả là một vị trí xa xôi (ví dụ: đại dương hoặc sa mạc) thì chỉ có thể trả về mã toàn cục.
  • html_attributions: Mảng thuộc tính mà bạn nên hiển thị khi hiển thị kết quả tìm kiếm. Mỗi mục trong mảng chứa văn bản HTML cho một thuộc tính. Lưu ý: Đây là tổng hợp tất cả các thuộc tính cho toàn bộ phản hồi tìm kiếm. Tất cả Do đó, các đối tượng PlaceResult trong phản hồi chứa danh sách phân bổ y hệt nhau.
  • icon trả về URL của một biểu tượng PNG có màu 71 px x 71 px.
  • icon_mask_base_uri trả về URL cơ sở cho một URL không có màu biểu tượng, trừ đuôi .svg hoặc .png.
  • icon_background_color trả về mã màu HEX mặc định cho danh mục của địa điểm.
  • name: Tên địa điểm.
  • opening_hours có thể chứa các thông tin sau:
    • open_now là một giá trị boolean cho biết địa điểm đó có mở tại thời điểm hiện tại (Không dùng nữa trong Thư viện địa điểm, Maps JavaScript API, hãy sử dụng utc_offset_minutes thay thế).
  • place_id là giá trị nhận dạng dạng văn bản giúp xác định duy nhất một địa điểm. Để truy xuất thông tin về địa điểm, hãy chuyển giá trị nhận dạng này vào phương thức Thông tin chi tiết về địa điểm . Tìm hiểu thêm về cách tham chiếu đến một địa điểm có mã địa điểm.
  • rating chứa điểm xếp hạng của địa điểm từ 0 đến 5 dựa trên dựa trên các bài đánh giá tổng hợp của người dùng.
  • types Một mảng loại cho địa điểm này (ví dụ: ["political", "locality"] hoặc ["restaurant", "lodging"]). Mảng này có thể chứa nhiều giá trị hoặc có thể là trống. Các giá trị mới có thể được cung cấp mà không cần thông báo trước. Xem danh sách các loại được hỗ trợ.
  • vicinity: Địa chỉ đơn giản cho địa điểm, bao gồm tên đường, số nhà và địa phương, nhưng không phải tỉnh/tiểu bang, mã bưu điện hoặc quốc gia. Ví dụ: Sydney của Google, Văn phòng tại Úc có giá trị vicinity5/48 Pirrama Road, Pyrmont.

Truy cập vào các kết quả bổ sung

Theo mặc định, mỗi lượt tìm kiếm địa điểm sẽ trả về tối đa 20 kết quả cho mỗi cụm từ tìm kiếm. Tuy nhiên, mỗi lượt tìm kiếm có thể trả về tới 60 kết quả, được chia thành ba trang. Bạn có thể truy cập các trang bổ sung thông qua PlaceSearchPagination . Để truy cập vào các trang bổ sung, bạn phải nắm bắt Đối tượng PlaceSearchPagination thông qua một hàm callback. Chiến lược phát hành đĩa đơn Đối tượng PlaceSearchPagination được định nghĩa là:

  • hasNextPage, một thuộc tính boolean cho biết liệu đã có kết quả. true khi có thêm trang kết quả.
  • nextPage() một hàm sẽ trả về tập hợp tiếp theo kết quả. Sau khi thực hiện tìm kiếm, bạn phải đợi giây trước khi trang kết quả tiếp theo sẽ hiển thị.

Để xem nhóm kết quả tiếp theo, hãy gọi nextPage. Mỗi trang kết quả phải được hiển thị trước khi hiển thị trang tiếp theo của kết quả. Xin lưu ý rằng mỗi lượt tìm kiếm được tính là một yêu cầu duy nhất đối với hạn mức sử dụng.

Ví dụ dưới đây minh hoạ cách thay đổi hàm callback thành chụp đối tượng PlaceSearchPagination để có thể đưa ra nhiều yêu cầu tìm kiếm.

TypeScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">

function initMap(): void {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: pyrmont,
      zoom: 17,
      mapId: "8d193001f940fde3",
    } as google.maps.MapOptions
  );

  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage: () => void | false;
  const moreButton = document.getElementById("more") as HTMLButtonElement;

  moreButton.onclick = function () {
    moreButton.disabled = true;

    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (
      results: google.maps.places.PlaceResult[] | null,
      status: google.maps.places.PlacesServiceStatus,
      pagination: google.maps.places.PlaceSearchPagination | null
    ) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;

      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    }
  );
}

function addPlaces(
  places: google.maps.places.PlaceResult[],
  map: google.maps.Map
) {
  const placesList = document.getElementById("places") as HTMLElement;

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon!,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name!,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name!;
      placesList.appendChild(li);

      li.addEventListener("click", () => {
        map.setCenter(place.geometry!.location!);
      });
    }
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
function initMap() {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center: pyrmont,
    zoom: 17,
    mapId: "8d193001f940fde3",
  });
  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage;
  const moreButton = document.getElementById("more");

  moreButton.onclick = function () {
    moreButton.disabled = true;
    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (results, status, pagination) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;
      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    },
  );
}

function addPlaces(places, map) {
  const placesList = document.getElementById("places");

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name;
      placesList.appendChild(li);
      li.addEventListener("click", () => {
        map.setCenter(place.geometry.location);
      });
    }
  }
}

window.initMap = initMap;
Xem ví dụ

Dùng thử mẫu

Thông tin về địa điểm

Ngoài việc cung cấp danh sách các địa điểm trong một khu vực, tính năng Địa điểm cũng có thể trả về thông tin chi tiết về một địa điểm cụ thể. Một lần một địa điểm đã được trả về trong phản hồi tìm kiếm địa điểm, mã địa điểm có thể được dùng để yêu cầu thêm chi tiết về địa điểm đó, chẳng hạn như địa chỉ đầy đủ, số điện thoại, điểm xếp hạng của người dùng và bài đánh giá, v.v.

Yêu cầu cung cấp thông tin chi tiết về địa điểm

Bạn sẽ nhận được yêu cầu cung cấp Thông tin chi tiết về địa điểm bằng cách gọi đến getDetails().

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

Phương thức này nhận một yêu cầu, chứa placeId và các trường cho biết loại dữ liệu Địa điểm quay lại. Tìm hiểu thêm về cách tham chiếu một địa điểm bằng mã địa điểm.

Phương thức này cũng sử dụng phương thức gọi lại để xử lý mã trạng thái được truyền trong phản hồi google.maps.places.PlacesServiceStatus làm đối tượng google.maps.places.PlaceResult.

var request = {
  placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
  fields: ['name', 'rating', 'formatted_phone_number', 'geometry']
};

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

Xem ví dụ

Trường (Chi tiết về địa điểm)

Tham số fields lấy một mảng chuỗi (tên trường).

Dùng tham số fields để chỉ định một mảng các loại dữ liệu địa điểm cần trả về. Ví dụ: fields: ['address_components', 'opening_hours', 'geometry']. Sử dụng dấu chấm khi chỉ định giá trị phức hợp. Ví dụ: opening_hours.weekday_text.

Các trường tương ứng với Thông tin chi tiết về địa điểm kết quả và được chia thành 3 danh mục thanh toán: Cơ bản, Liên hệ và Bầu không khí. Các trường cơ bản được tính phí theo mức cơ bản và không phát sinh thêm các khoản phí. Các trường Địa chỉ liên hệ và Bầu không khí có mức phí cao hơn. Xem bảng giá để biết thêm thông tin. Thuộc tính (html_attributions) luôn luôn được trả về cùng với mọi lệnh gọi, bất kể nó đã được yêu cầu hay chưa.

Cơ bản

Danh mục Cơ bản bao gồm các trường sau:
address_components, adr_address, business_status formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (không dùng nữa), photo, place_id, plus_code, type, url, utc_offset (không dùng nữa trong Thư viện địa điểm, API Maps JavaScript), utc_offset_minutes, vicinity

Lượt liên hệ

Danh mục Người liên hệ bao gồm các trường sau:
formatted_phone_number, international_phone_number website, opening_hours

Bầu không khí

Danh mục Bầu không khí bao gồm các trường sau: price_level, rating, reviews user_ratings_total

Tìm hiểu thêm về trường vị trí. Để biết thêm thông tin về cách lập hoá đơn cho các yêu cầu dữ liệu Địa điểm, hãy xem Mức sử dụng và thanh toán.

Câu trả lời cho thông tin chi tiết về địa điểm

Mã trạng thái

Đối tượng phản hồi PlacesServiceStatus chứa trạng thái của yêu cầu và có thể chứa thông tin gỡ lỗi để giúp bạn theo dõi lý do khiến yêu cầu Chi tiết địa điểm không thành công. Các giá trị trạng thái có thể có là:

  • INVALID_REQUEST: Yêu cầu này không hợp lệ.
  • OK: Phản hồi chứa kết quả hợp lệ.
  • OVER_QUERY_LIMIT: Trang web đã xem xét yêu cầu hạn mức.
  • NOT_FOUND Vị trí được tham chiếu không tìm thấy trong cơ sở dữ liệu Địa điểm.
  • REQUEST_DENIED: Trang web không được phép sử dụng PlacesService.
  • UNKNOWN_ERROR: Không thể yêu cầu PlacesService được xử lý do lỗi máy chủ. Yêu cầu có thể thành công nếu bạn thử lại.
  • ZERO_RESULTS: Không tìm thấy kết quả nào cho yêu cầu này.

Kết quả Chi tiết địa điểm

Lệnh gọi getDetails() thành công sẽ trả về một giá trị PlaceResult có các thuộc tính sau:

  • address_components: Một mảng chứa các áp dụng cho địa chỉ này.

    Mỗi thành phần địa chỉ thường chứa các trường sau:

    • types[] là một mảng cho biết loại của thành phần địa chỉ. Xem danh sách các loại được hỗ trợ.
    • long_name là văn bản mô tả đầy đủ hoặc tên của địa chỉ do Bộ mã hoá địa lý trả về.
    • short_name là tên viết tắt dạng văn bản cho địa chỉ thành phần, nếu có. Ví dụ: thành phần địa chỉ của trạng thái Alaska có thể có long_name là "Alaska" và một short_name trong số "AK" bằng cách sử dụng ký tự viết tắt gồm 2 chữ cái của bưu điện.

    Vui lòng lưu ý những thông tin sau về address_components[] mảng:

    • Mảng thành phần địa chỉ có thể chứa nhiều thành phần hơn so với formatted_address.
    • Mảng này không nhất thiết phải bao gồm tất cả các pháp nhân chính trị chứa địa chỉ, ngoài những địa chỉ được nêu trong formatted_address. Cách truy xuất tất cả pháp nhân chính trị có chứa địa chỉ cụ thể, bạn nên sử dụng mã hoá địa lý ngược, truyền vĩ độ/kinh độ của địa chỉ dưới dạng một tham số cho yêu cầu.
    • Định dạng của phản hồi không được đảm bảo sẽ giống nhau giữa yêu cầu. Cụ thể, số lượng address_components sẽ khác nhau tuỳ theo địa chỉ được yêu cầu và có thể thay đổi theo thời gian đối với cùng địa chỉ. Một thành phần có thể thay đổi vị trí trong mảng. Loại của thành phần có thể thay đổi. Một thành phần cụ thể có thể bị thiếu trong câu trả lời sau đó.
  • business_status cho biết hoạt động trạng thái của địa điểm, nếu đó là một doanh nghiệp. Tên này có thể chứa một trong những các giá trị sau:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Nếu không có dữ liệu, hàm business_status sẽ không được trả về.
  • formatted_address: Địa chỉ của địa điểm này mà con người có thể đọc được.

    Thông thường, địa chỉ này tương đương với địa chỉ bưu điện. Lưu ý rằng một số quốc gia khác (chẳng hạn như Vương quốc Anh) không cho phép phân phối địa chỉ bưu chính do các quy định hạn chế về giấy phép.

    Địa chỉ được định dạng bao gồm một hoặc nhiều địa chỉ theo logic thành phần. Ví dụ: địa chỉ "111 8th Avenue, New York, NY" bao gồm các thành phần sau: "111" (số nhà), "Đại lộ số 8" (tuyến đường), "New York" (thành phố) và "NY" (tiểu bang của Hoa Kỳ).

    Không phân tích cú pháp địa chỉ đã định dạng theo phương thức lập trình. Thay vào đó, bạn nên sử dụng các thành phần địa chỉ riêng lẻ, trong đó phản hồi của API còn bao gồm vào trường địa chỉ được định dạng.

  • formatted_phone_number: Số điện thoại của địa điểm, được định dạng theo quy ước khu vực của số.
  • geometry: Thông tin có liên quan đến hình học của địa điểm. Chiến dịch này bao gồm:
    • location cung cấp vĩ độ và kinh độ của địa điểm.
    • viewport xác định khung nhìn ưu tiên trên bản đồ khi đang xem địa điểm này.
  • permanently_closed (không dùng nữa) là một cờ boolean cho biết liệu địa điểm đã ngừng hoạt động vĩnh viễn hoặc tạm thời (giá trị true). Không sử dụng permanently_closed. Thay vào đó, hãy sử dụng business_status để biết tình trạng hoạt động của doanh nghiệp.
  • plus_code (xem Mở mã vị trímã cộng) là tham chiếu vị trí được mã hoá, lấy từ vĩ độ và kinh độ đại diện cho một diện tích: 1/8000 của độ x 1/8000 của độ (khoảng 14m x 14m ở đường xích đạo) hoặc nhỏ hơn. Plus code có thể được dùng để thay thế cho địa chỉ đường phố ở nơi không tồn tại (nơi toà nhà không được đánh số hoặc đường phố không được đặt tên).

    Plus code được định dạng là một mã toàn cục và một mã phức hợp:

    • global_code là mã vùng gồm 4 ký tự và mã địa phương dài 6 ký tự trở lên (849VCWC8+R9).
    • compound_code là một mã cục bộ dài 6 ký tự trở lên có vị trí rõ ràng (CWC8+R9, Mountain View, CA, Hoa Kỳ). Đừng phân tích cú pháp nội dung này theo phương thức lập trình.
    Thông thường, cả mã toàn cục và mã phức hợp đều được trả về. Tuy nhiên, nếu kết quả là một vị trí xa xôi (ví dụ: đại dương hoặc sa mạc) thì chỉ có thể trả về mã toàn cục.
  • html_attributions: Văn bản thuộc tính sẽ được hiển thị cho kết quả về địa điểm này.
  • icon: URL đến một tài nguyên hình ảnh có thể dùng để thể hiện loại hình của địa điểm này.
  • international_phone_number có số điện thoại của địa điểm số ở định dạng quốc tế. Định dạng quốc tế bao gồm cả quốc gia và có tiền tố là dấu cộng (+). Ví dụ: international_phone_number cho Sydney của Google, Úc văn phòng là +61 2 9374 4000.
  • name: Tên địa điểm.
  • utc_offset Không dùng nữa trong Thư viện địa điểm, API Maps JavaScript, hãy sử dụng utc_offset_minutes.
  • utc_offset_minutes chứa số phút này múi giờ hiện tại của địa điểm sẽ được bù trừ so với giờ UTC. Ví dụ: đối với các địa điểm ở Sydney, Úc theo giờ mùa hè, nhiệt độ này sẽ là 660 (+11 giờ so với giờ UTC) và đối với những địa điểm ở California ngoài giờ mùa hè giá trị này sẽ là -480 (-8 giờ so với giờ UTC).
  • opening_hours chứa những thông tin sau:
    • open_now (Không dùng nữa trong Thư viện địa điểm, Maps JavaScript API; sử dụng Thay vào đó, opening_hours.isOpen(). Xem video này để biết cách sử dụng isOpen có Thông tin chi tiết về địa điểm.) là giá trị boolean cho biết địa điểm hiện có đang mở cửa hay không bất cứ lúc nào.
    • periods[] là một mảng các khoảng thời gian mở cửa bao gồm bảy ngày, bắt đầu từ Chủ Nhật, theo trình tự thời gian. Mỗi kỳ chứa:
      • open chứa một cặp đối tượng ngày và giờ mô tả thời điểm địa điểm mở cửa:
        • day một số từ 0 đến 6, tương ứng với các ngày trong tuần, bắt đầu từ Chủ Nhật. Ví dụ: 2 có nghĩa là Thứ Ba.
        • time có thể chứa thời gian trong ngày trong 24 giờ hhmm (giá trị nằm trong khoảng 0000 – 2359). Chiến lược phát hành đĩa đơn time sẽ được báo cáo theo múi giờ của địa điểm.
      • close có thể chứa một cặp đối tượng ngày và giờ mô tả thời điểm địa điểm đóng cửa. Lưu ý: Nếu một địa điểm luôn mở, phần close sẽ bị thiếu trong câu trả lời. Các ứng dụng có thể dựa trên chế độ luôn mở được biểu thị dưới dạng dấu chấm open có chứa day có giá trị 0 và time có giá trị 0000, và không có close.
    • weekday_text là một mảng gồm 7 chuỗi biểu thị giờ mở cửa được định dạng cho mỗi ngày trong tuần. Nếu một Thông số language đã được chỉ định trong Thông tin chi tiết về địa điểm Dịch vụ địa điểm sẽ định dạng và bản địa hoá giờ mở cửa một cách phù hợp cho ngôn ngữ đó. Thứ tự của các phần tử trong mảng phụ thuộc vào tham số language. Một số ngôn ngữ bắt đầu tuần vào thứ Hai trong khi các chương trình khác bắt đầu vào Chủ Nhật.
  • permanently_closed (không dùng nữa) là một cờ boolean cho biết liệu địa điểm đã ngừng hoạt động vĩnh viễn hoặc tạm thời (giá trị true). Không sử dụng permanently_closed. Thay vào đó, hãy sử dụng business_status để biết tình trạng hoạt động của doanh nghiệp.
  • photos[]: một mảng gồm các đối tượng PlacePhoto. Bạn có thể dùng PlacePhoto để lấy ảnh có getUrl() hoặc bạn có thể kiểm tra đối tượng để các giá trị sau:
    • height: chiều cao tối đa của hình ảnh, tính bằng pixel.
    • width: chiều rộng tối đa của hình ảnh, tính bằng pixel.
    • html_attributions: Văn bản thuộc tính sẽ được hiển thị với ảnh địa điểm này.
  • place_id: Giá trị nhận dạng dạng văn bản giúp xác định duy nhất một địa điểm và có thể được dùng để lấy thông tin về địa điểm đó thông qua Chi tiết địa điểm yêu cầu. Tìm hiểu thêm về cách tham chiếu đến một địa điểm có mã địa điểm.
  • rating: Điểm xếp hạng của địa điểm, từ 0 đến 5 dựa trên bài đánh giá tổng hợp của người dùng.
  • reviews một mảng gồm tối đa 5 bài đánh giá. Mỗi bài đánh giá bao gồm một số thành phần:
    • aspects[] chứa một mảng PlaceAspectRating, mỗi đối tượng cung cấp một điểm xếp hạng về một thuộc tính duy nhất của cơ sở. Đối tượng đầu tiên trong mảng được coi là khía cạnh chính. Một PlaceAspectRating được định nghĩa là:
      • type tên của khía cạnh đang được xếp hạng. Các loại sau được hỗ trợ: appeal, atmosphere, decor facilities, food, overall qualityservice.
      • rating điểm xếp hạng của người dùng cho ứng dụng cụ thể này khía cạnh, từ 0 đến 3.
    • author_name tên của người dùng đã gửi bài đánh giá. Bài đánh giá ẩn danh được gán cho "Một người dùng Google". Nếu một ngôn ngữ đã được đặt, sau đó là cụm từ "Một người dùng Google" sẽ trả về một chuỗi đã bản địa hoá.
    • author_url URL tới hồ sơ trên Google+ của người dùng, nếu sẵn có.
    • language một mã ngôn ngữ IETF biểu thị ngôn ngữ được sử dụng trong bài đánh giá của người dùng. Trường này chứa thẻ ngôn ngữ chính và không phải là thẻ phụ biểu thị quốc gia hoặc khu vực. Để ví dụ: tất cả bài đánh giá bằng tiếng Anh đều được gắn thẻ là "en" chứ không phải là "en-AU" hoặc "en-UK" và cứ tiếp tục như vậy.
    • rating điểm xếp hạng chung của người dùng cho địa điểm này. Chiến dịch này là một số nguyên, nằm trong khoảng từ 1 đến 5.
    • text bài đánh giá của người dùng. Khi xem xét một vị trí cùng Google Địa điểm, thì bài đánh giá bằng văn bản sẽ được coi là không bắt buộc; do đó, trường này có thể trống.
  • types Một mảng loại cho địa điểm này (ví dụ: ["political", "locality"] hoặc ["restaurant", "lodging"]). Mảng này có thể chứa nhiều giá trị hoặc có thể là trống. Các giá trị mới có thể được cung cấp mà không cần thông báo trước. Xem danh sách các loại được hỗ trợ.
  • url: URL của trang chính thức của Google cho tính năng này địa điểm. Đây là trang do Google sở hữu có chứa những thông tin thông tin hiện có về địa điểm. Ứng dụng phải liên kết đến hoặc nhúng trang này trên bất kỳ màn hình nào hiển thị kết quả chi tiết về địa điểm để người dùng.
  • vicinity: Địa chỉ đơn giản cho địa điểm, bao gồm tên đường, số nhà và địa phương, nhưng không phải tỉnh/tiểu bang, mã bưu điện hoặc quốc gia. Ví dụ: Sydney của Google, Văn phòng tại Úc có giá trị vicinity5/48 Pirrama Road, Pyrmont. Thuộc tính vicinity chỉ được trả về cho Tìm kiếm lân cận.
  • website liệt kê trang web đáng tin cậy cho địa điểm này, chẳng hạn như doanh nghiệp trang chủ.

Lưu ý: Xếp hạng đa chiều có thể không khả dụng cho tất cả vị trí. Nếu có quá ít bài đánh giá thì câu trả lời chi tiết sẽ bao gồm xếp hạng cũ theo thang điểm 0,0 đến 5,0 (nếu có) hoặc không xếp hạng nào.

Sử dụng thành phần Tổng quan về địa điểm

Lưu ý: Mẫu này sử dụng thư viện nguồn mở. Xem README để được hỗ trợ và phản hồi liên quan đến thư viện.

Thử dùng các thành phần web. Sử dụng Đặt thành phần web Tổng quan để xem thông tin chi tiết về địa điểm có hình ảnh minh hoạ.

Hình ảnh thể hiện các biến thể kích thước x nhỏ, nhỏ, trung bình, lớn và x lớn của
    Thành phần Tổng quan về địa điểm hiển thị dựa trên trường kích thước do người dùng nhập.
Hình 1: Thông tin chi tiết về địa điểm với 5 biến thể kích thước khác nhau

Tham chiếu đến một địa điểm bằng mã địa điểm

Mã địa điểm là tham chiếu duy nhất đến một địa điểm trên Google Maps. Mã địa điểm có sẵn cho hầu hết các vị trí, bao gồm doanh nghiệp, địa danh, công viên, và giao điểm.

Để sử dụng mã địa điểm trong ứng dụng của mình, trước tiên, bạn phải tra cứu mã đó. có sẵn trong PlaceResult của một yêu cầu Tìm kiếm địa điểm hoặc Chi tiết. Sau đó, bạn có thể sử dụng mã địa điểm này để tra cứu Địa điểm Thông tin chi tiết.

Mã địa điểm được miễn khỏi các hạn chế lưu vào bộ nhớ đệm đã nêu trong Mục 3.2.3(b) của Điều khoản dịch vụ của Nền tảng Google Maps. Do đó, bạn có thể lưu trữ các giá trị mã địa điểm để sử dụng sau này. Để phương pháp hay nhất khi lưu trữ ID địa điểm, hãy xem tổng quan về mã địa điểm.

var map;

function initialize() {
  // Create a map centered in Pyrmont, Sydney (Australia).
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -33.8666, lng: 151.1958},
    zoom: 15
  });

  // Search for Google's office in Australia.
  var request = {
    location: map.getCenter(),
    radius: '500',
    query: 'Google Sydney'
  };

  var service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

// Checks that the PlacesServiceStatus is OK, and adds a marker
// using the place ID and location from the PlacesService.
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
      map: map,
      place: {
        placeId: results[0].place_id,
        location: results[0].geometry.location
      }
    });
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

Hình ảnh về địa điểm

Tính năng Chụp ảnh địa điểm cho phép bạn thêm ảnh chụp chất lượng cao nội dung vào trang web của bạn. Dịch vụ Ảnh cung cấp cho bạn quyền truy cập vào hàng triệu ảnh được lưu trữ trong cơ sở dữ liệu Địa điểm và Google+ Địa phương. Khi bạn đến nơi bằng cách sử dụng yêu cầu Chi tiết địa điểm, ảnh sẽ được trả về tệp đối chiếu cho nội dung hình ảnh có liên quan. Tìm kiếm lân cận và yêu cầu Tìm kiếm văn bản cũng trả về một tham chiếu ảnh duy nhất cho mỗi địa điểm, khi phù hợp. Sử dụng dịch vụ Ảnh, sau đó bạn có thể truy cập ảnh được tham chiếu và đổi kích thước hình ảnh thành kích thước tối ưu cho ứng dụng của bạn.

Một mảng gồm các đối tượng PlacePhoto sẽ được trả về như một phần của đối tượng PlaceResult cho getDetails() bất kỳ, textSearch() hoặc Đã đưa ra yêu cầu nearbySearch() đối với PlacesService.

Lưu ý: Số lượng ảnh được trả về sẽ thay đổi tuỳ theo yêu cầu.

  • Tìm kiếm lân cận hoặc Tìm kiếm văn bản sẽ trả về tối đa một kết quả Đối tượng PlacePhoto.
  • Yêu cầu Chi tiết sẽ trả về tối đa 10 đối tượng PlacePhoto.

Bạn có thể yêu cầu URL cho hình ảnh được liên kết bằng cách gọi hàm PlacePhoto.getUrl() và truyền một phương thức hợp lệ Đối tượng PhotoOptions. Đối tượng PhotoOptions cho phép bạn chỉ định chiều cao và chiều rộng tối đa mong muốn của hình ảnh. Nếu bạn hãy chỉ định một giá trị cho cả maxHeightmaxWidth, dịch vụ ảnh sẽ đổi kích thước hình ảnh thành nhỏ hơn trong hai kích thước, trong khi duy trì tỷ lệ khung hình gốc.

Đoạn mã sau đây chấp nhận một đối tượng địa điểm và thêm một điểm đánh dấu vào bản đồ nếu ảnh tồn tại. Hình ảnh điểm đánh dấu mặc định đã được thay thế bởi một phiên bản nhỏ của bức ảnh.

function createPhotoMarker(place) {
  var photos = place.photos;
  if (!photos) {
    return;
  }

  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location,
    title: place.name,
    icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35})
  });
}

Ảnh mà dịch vụ Ảnh trả về được lấy từ nhiều nguồn vị trí, bao gồm cả chủ doanh nghiệp và ảnh do người dùng đóng góp. Trong hầu hết trong trường hợp, các ảnh này có thể được sử dụng mà không cần ghi nhận tác giả hoặc sẽ có yêu cầu thuộc tính được thêm vào dưới dạng một phần của hình ảnh. Tuy nhiên, nếu giá trị trả về Phần tử photo bao gồm một giá trị trong phần tử html_attributions, bạn phải thêm các trường bổ sung trong ứng dụng của bạn ở bất cứ nơi nào bạn hiển thị hình ảnh.