Tổng quan
Các chức năng trong Thư viện địa điểm, API Maps JavaScript cho phép ứng dụng của bạn tìm kiếm địa điểm (được xác định trong API này là cơ sở, vị trí địa lý hoặc điểm yêu 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ể dùng để cung cấp cho các ứng dụng của mình hành vi tìm kiếm trước loại trường tìm kiếm của Google Maps. 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 vào phần còn lại. Để biết thêm thông tin, hãy xem tài liệu về tính năng tự động hoàn thành.
Bắt đầu
Nếu bạn chưa hiểu rõ về API JavaScript cho Maps hoặc JavaScript, thì bạn nên xem lại JavaScript và Nhận khoá API trước khi bắt đầu.
Bật API
Trước khi sử dụng thư viện Địa điểm trong API JavaScript cho Maps, trước tiên, hãy đảm bảo rằng API Địa điểm được bật trong Google Cloud Console, trong cùng một dự án mà bạn đã thiết lập cho API JavaScript của Maps.
Cách xem danh sách các API đã bật:
- Chuyển đến Google Cloud Console.
- Nhấp vào nút Select a project (Chọn một dự án), sau đó chọn cùng một dự án mà bạn đã thiết lập cho Maps JavaScript API và nhấp vào Open (Mở).
- Trong danh sách các API trên Trang tổng quan, hãy tìm API Địa điểm.
- Nếu bạn thấy API địa điểm trong danh sách, thì API này đã được bật. Nếu API không có trong danh sách, hãy bật API:
- Ở đầu trang, hãy chọn BẬT APIS VÀ DỊCH VỤ để hiển thị thẻ Thư viện. Ngoài ra, trên trình đơn bên trái, hãy chọn Thư viện.
- Tìm kiếm Places API (API địa điểm), sau đó chọn API này trong danh sách kết quả.
- Chọn ENABLE (BẬT). Khi quá trình này kết thúc, API Địa điểm sẽ xuất hiện trong danh sách các 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 mã API JavaScript chính của Maps. Để sử dụng chức năng có trong thư viện này, trước tiên bạn phải tải chức năng này bằng cách sử dụng tham số libraries
trong URL khởi động của API Maps:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap">
</script>
Vui lòng xem phần Tổng quan về các thư viện để biết thêm thông tin.
Thêm API địa điểm vào danh sách hạn chế API của khoá API
Việc áp dụng các quy định hạn chế về API cho khoá của bạn sẽ giới hạn việc sử dụng khoá API ở một hoặc nhiều API hoặc SDK. Các yêu cầu gửi tới API hoặc SDK liên kết với khoá API sẽ được xử lý. Các yêu cầu gửi tới API hoặc SDK không liên kết với khoá API sẽ không thành công. Cách giới hạn một khoá API để sử dụng với Thư viện địa điểm, API JavaScript cho Maps:- Truy cập vào Google Cloud Console.
- Nhấp vào trình đơn thả xuống dự án và chọn dự án chứa khóa API mà bạn muốn bảo mật.
- Nhấp vào nút trình đơn
và chọn Nền tảng Google Maps > Thông tin xác thực.
- Trên trang Credentials (Thông tin xác thực), hãy nhấp vào tên của khoá API mà bạn muốn bảo mật.
- Trên trang Hạn chế và đổi tên khoá API, hãy đặt các quy định hạn chế:
- Các hạn chế đối với API
- Chọn Hạn chế phím.
- Nhấp vào Chọn API và chọn cả API Maps Maps và API địa điểm.
(Nếu một trong hai API này không có trong danh sách, bạn cần phải bật API đó.)
- Nhấp vào LƯU.
Hạn mức sử dụng và chính sách
Hạn mức
Thư viện địa điểm, API JavaScript dùng chung một 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 cho API địa điểm.
Chính sách
Việc sử dụng Thư viện địa điểm, API Maps JavaScript phải tuân thủ chính sách được mô tả cho API địa điểm.
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:
- Tìm địa điểm từ truy vấn trả về một địa điểm dựa trên truy vấn văn bản (ví dụ: tên hoặc địa chỉ của một địa điểm).
- Tìm địa điểm từ số điện thoại trả về một địa điểm dựa trên số điện thoại.
- Tính năng Tìm kiếm lân cận trả về danh sách các địa điểm lân cận dựa trên vị trí của người dùng.
- Tìm kiếm văn bản trả về danh sách các địa điểm lân cận dựa trên chuỗi tìm kiếm, ví dụ: "Pizza".
- Yêu cầu Thông tin chi tiết về địa điểm trả về thông tin chi tiết hơn về một địa điểm cụ thể, bao gồm bài đánh giá của người dùng.
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ư kết quả "mã hoá địa lý", cho biết địa chỉ, khu vực chính trị như thị trấn, thành phố và các địa điểm quan tâm khác.
Tìm yêu cầu Địa điểm
Yêu cầu Tìm địa điểm cho phép bạn tìm kiếm một địa điểm theo truy vấn văn bản hoặc qua số điện thoại. Có hai loại yêu cầu Tìm địa điểm:
Tìm địa điểm từ truy vấn
Tìm địa điểm từ truy vấn lấy văn bản nhập và trả về một địa điểm. Dữ liệu đầu vào có thể là bất kỳ loại dữ liệu Địa điểm nào, chẳng hạn như tên hoặc địa chỉ doanh nghiệp. Để tạo yêu cầu Tìm địa điểm từ truy vấn, hãy gọi phương thức findPlaceFromQuery()
của PlacesService
. Phương thức này sẽ nhận các tham số sau:
query
(bắt buộc) Chuỗi văn bản cầ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 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ệ. API Địa điểm sẽ trả về các kết quả trùng khớp với đề xuất dựa trên chuỗi này và sắp xếp các kết quả dựa trên mức độ liên quan theo ý muốn.fields
(bắt buộc) Một hoặc nhiều trường chỉ định loại dữ liệu Địa điểm để trả về.locationBias
(không bắt buộc) Toạ độ xác định khu vực để tìm kiếm. Đây có thể là một trong những trạng thái sau đây:- Một tập hợp các toạ độ vĩ độ/kinh độ được chỉ định là LatLngLiteral hoặc đối tượng LatLng
- Giới hạn hình chữ nhật (hai cặp vĩ độ/lĩnh vực hoặc một đối tượng LatLngBounds)
- Bán kính (tính bằng mét) nằm ở giữa một kinh độ/kinh độ
Bạn cũng phải truyền một phương thức gọi lại cho findPlaceFromQuery()
để xử lý đối tượng kết quả và phản hồi google.maps.places.PlacesServiceStatus
.
Ví dụ sau đây cho thấy lệnh gọi đến findPlaceFromQuery()
, tìm kiếm "Bảo tàng Nghệ thuật Đương đại Úc" và bao gồm các trường name
và geometry
.
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 sẽ lấy số điện thoại và trả về một địa điểm. Để tạo yêu cầu Tìm địa điểm từ số điện thoại, hãy gọi phương thức findPlaceFromPhoneNumber()
của PlacesService
. Phương thức này sẽ 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 để trả về.locationBias
(không bắt buộc) Toạ độ xác định khu vực để tìm kiếm. Đây có thể là một trong những trạng thái sau đây:- Một tập hợp các toạ độ vĩ độ/kinh độ được chỉ định là LatLngLiteral hoặc đối tượng LatLng
- Giới hạn hình chữ nhật (4 điểm vĩ độ/lĩnh vực hoặc đối tượng LatLngBounds)
- Bán kính (tính bằng mét) nằm ở giữa một kinh độ/kinh độ
Bạn cũng phải truyền một phương thức gọi lại cho findPlaceFromPhoneNumber()
để xử lý đối tượng kết quả và phản hồi google.maps.places.PlacesServiceStatus
.
Trường (Tìm phương thức Địa điểm)
Sử 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 các 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 loại thanh toán: Cơ bản, Liên hệ và Bầu không khí. Các trường cơ bản được lập hóa đơn theo mức cơ bản và không phát sinh thêm phí. Các trường Liên hệ và Khí quyển
được thanh toán ở mức giá cao hơn. Xem bảng giá để biết thêm thông tin. Mô hình phân bổ (html_attributions
) luôn
được trả về với mọi lệnh gọi, bất kể trường đó có được yêu cầu
hay không.
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
(đã ngừng hoạt động),
photos
, place_id
, plus_code
, types
Liên hệ
Danh mục Liên hệ bao gồm trường sau:opening_hours
(không dùng nữa trong Thư viện địa điểm, API Maps JavaScript. Sử dụng yêu cầu Chi tiết địa điểm để nhận kết quả
opening_hours
).
Môi trường
Danh mục Khí quyển bao gồm các trường sau:price_level
, rating
, user_ratings_total
Phương thức findPlaceFromQuery()
và
findPlaceFromPhoneNumber()
đều sử dụng cùng một nhóm trường và có thể trả về cùng một trường trong phản hồi tương ứng.
Thiết lập xu hướng vị trí (Tìm phương pháp địa điểm)
Sử dụng tham số locationBias
để tạo kết quả ưu tiên Tìm địa điểm trong một khu vực cụ thể. Bạn có thể đặt locationBias
theo các cách sau:
Định hướng kết quả là một khu vực cụ thể:
locationBias: {lat: 37.402105, lng: -122.081974}
Xác định một 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), tập trung 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 ở khu vực lân cận
Tính năng Tìm kiếm lân cận cho phép bạn tìm các địa điểm trong một khu vực cụ thể theo từ khoá hoặc loại. Nội dung tìm kiếm lân cận phải luôn bao gồm vị trí, có thể được chỉ định theo một trong hai cách sau:
-
LatLngBounds
. - một vùng tròn được xác định là tổ hợp của thuộc tính
location
— xác định tâm của vòng tròn dưới dạng một đối tượngLatLng
— và bán kính được đo bằng mét.
Tìm kiếm Địa điểm lân cận được bắt đầu bằng lệnh gọi phương thức nearbySearch()
của
PlacesService
. Phương thức này sẽ trả về một loạt các đối tượng
PlaceResult
. Xin lưu ý rằng phương thức nearbySearch()
sẽ 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 sẽ yêu cầu các trường sau:
- Chọn một trong hai lựa chọn sau:
bounds
, phải là một đối tượnggoogle.maps.LatLngBounds
xác định khu vực tìm kiếm hình chữ nhật; hoặclocation
vàradius
; tham số cũ lấy đối tượnggoogle.maps.LatLng
, tham số sau lấy số nguyên đơn giản, biểu thị bán kính của vòng tròn tính bằng mét. Bán kính tối đa cho phép là 50 000 mét. Xin lưu ý rằng khi đặtrankBy
thành DISTANCE, bạn phải chỉ địnhlocation
nhưng không thể chỉ địnhradius
hoặcbounds
.
keyword
(không bắt buộc) — Một cụm từ để so khớp với 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à địa chỉ, cũng như bài đánh giá của khách hàng và nội dung khác của bên thứ ba.minPriceLevel
vàmaxPriceLevel
(không bắt buộc) – Hạn chế kết quả chỉ ở những địa điểm trong phạm vi được chỉ định. Phạm vi giá trị hợp lệ là từ 0 (thấp nhất) đến 4 (đắt nhất).- Đã ngừng sử dụng
name
. Tương đương vớikeyword
. Các giá trị trong trường này được kết hợp với các giá trị trong trườngkeyword
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) – Giá trị boolean, cho biết rằng dịch vụ Địa điểm chỉ nên trả về những địa điểm mở cửa kinh doanh tại thời điểm truy vấn được gửi. Những địa điểm không chỉ định giờ mở cửa trong cơ sở dữ liệu của Google Địa điểm sẽ không được trả về nếu bạn đưa tham số này vào cụm từ tìm kiếm. Việc đặtopenNow
thànhfalse
không có hiệu lực.rankBy
(không bắt buộc) – Xác định thứ tự liệt kê các kết quả. Các giá trị có thể sử dụng là:google.maps.places.RankBy.PROMINENCE
(mặc định). Tuỳ chọn này sắp xếp kết quả dựa trên tầm 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 phạm vi bán kính đặt ra so với các địa điểm lân cận phù hợp nhưng ít nổi bật hơn. Mức độ nổi bật có thể chịu ảnh hưởng của 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. Khi bạn chỉ địnhgoogle.maps.places.RankBy.PROMINENCE
, bạn sẽ phải sử dụng tham sốradius
.google.maps.places.RankBy.DISTANCE
. Tùy 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
đã chỉ định (bắt buộc). Xin lưu ý rằng bạn không thể chỉ địnhbounds
và/hoặcradius
tuỳ chỉnh nếu chỉ địnhRankBy.DISTANCE
. Khi bạn chỉ địnhRankBy.DISTANCE
, cần có một hoặc nhiềukeyword
,name
hoặctype
.
type
– Hạn chế kết quả trong các vị trí khớp với loại đã chỉ định. Bạn chỉ có thể chỉ định một loại (nếu bạn cung cấp nhiều loại, thì tất cả các loại sau mục đầu tiên sẽ 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 cho 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]); } } }
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 tập hợp các địa điểm dựa trên một chuỗi — ví dụ: "pizza ở New York" hoặc "các cửa hàng giày gần Ottawa". Dịch vụ này phản hồi bằng một danh sách các địa điểm khớp với chuỗi văn bản và bất kỳ vị trí nào đã được đặt. Phản hồi tìm kiếm sẽ bao gồm danh sách các địa điểm. Bạn có thể gửi yêu cầu Thông tin chi tiết về địa điểm để biết thêm thông tin về bất kỳ địa điểm nào trong phản hồi.
Các lượt 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 sẽ yêu cầu các trường sau:
query
(bắt buộc) Chuỗi văn bản mà trên đó cần tìm kiếm, ví dụ: "nhà hàng" hoặc "123 Main Street". Đây phải là 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ệ. Dịch vụ Địa điểm sẽ trả về 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à các ứng dụng nhận thấy. Tham số này sẽ không bắt buộc nếu tham sốtype
cũng được sử 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 dịch vụ Địa điểm chỉ nên trả về những địa điểm mở cửa hoạt động tại thời điểm truy vấn được gửi. Những địa điểm không chỉ định giờ mở cửa trong cơ sở dữ liệu của Google Địa điểm sẽ không được trả về nếu bạn đưa tham số này vào cụm từ tìm kiếm. Việc đặtopenNow
thànhfalse
không có hiệu lực.minPriceLevel
vàmaxPriceLevel
– Chỉ áp dụng kết quả cho những địa điểm trong phạm vi 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 (cao nhất).- Chọn một trong hai lựa chọn sau:
bounds
– Một đối tượnggoogle.maps.LatLngBounds
xác định hình chữ nhật cần tìm kiếm; hoặclocation
vàradius
— Bạn có thể thiên về kết quả cho một vòng tròn được chỉ định bằng cách truyền một tham sốlocation
vàradius
. Thao tác này sẽ hướng dẫn dịch vụ Địa điểm ưu tiê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 lấy một đối tượnggoogle.maps.LatLng
, và bán kính lấy một số nguyên đơn giản, đại diện cho bán kính của vòng tròn tính bằng mét. Bán kính tối đa cho phép là 50 000 mét.
type
– Hạn chế kết quả trong các vị trí khớp với loại đã chỉ định. Bạn chỉ có thể chỉ định một loại (nếu bạn cung cấp nhiều loại, thì tất cả các loại sau mục đầu tiên sẽ 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 cho 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]); } } }
Số lượt trả lời trong kết quả 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 lý do yêu cầu cung cấp địa điểm không thành công. Các giá trị trạng thái có thể 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 đã vượt quá hạn mức yêu cầu.REQUEST_DENIED
: Trang web này không được phép sử dụng PlacesService.UNKNOWN_ERROR
: Không thể xử lý yêu cầu PlacesService 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ả cho yêu cầu này.
Kết quả tìm kiếm địa điểm
Các hàm findPlace()
, nearbySearch()
và
textSearch()
trả về một loạt các đối tượ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 trạng thái hoạt động của địa điểm, nếu đó là một doanh nghiệp. Thuộc tính này có thể chứa một trong những giá trị sau:OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
sẽ không được trả về.formatted_address
là một chuỗi chứa địa chỉ đọc được của địa điểm này. Thuộc tínhformatted_address
chỉ được trả về cho một Text Search (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. Xin lưu ý rằng một số quốc gia, 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 thực sự do các hạn chế cấp phép.
Địa chỉ được định dạng bao gồm một hoặc nhiều thành phần địa chỉ theo logic. Ví dụ: địa chỉ "111 8th Avenue, New York, NY" bao gồm các thành phần sau: "111" (số đường phố), "8th Avenue" (tuyến đường), "New York" (thành phố) và "NY" (tiểu bang Hoa Kỳ).
Không được 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ẻ mà phản hồi API bao gồm ngoài trường địa chỉ đã được định dạng.
geometry
: Thông tin liên quan đến hình học của địa điểm. Hành động sửa đổi 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 xem địa điểm này.
permanently_closed
(không dùng nữa) là cờ boolean cho biết địa điểm đã tắt vĩnh viễn hoặc tạm thời (giá trịtrue
). Không sử dụngpermanently_closed
. Thay vào đó, hãy sử dụngbusiness_status
để biết trạng thái hoạt động của các doanh nghiệp.- (
plus_code
Bạn có thể sử dụng mã cộng để thay thế địa chỉ đường phố ở những nơi không có mã (các toà nhà không được đánh số hoặc không được đặt tên).Plus code được định dạng là mã chung và mã phức hợp:
global_code
là mã vùng gồm 4 ký tự và mã cục bộ dài 6 ký tự trở lên (849VCWC8+R9).compound_code
là một mã địa phương dài 6 ký tự trở lên có vị trí rõ ràng (CWC8+R9, Mountain View, CA, Hoa Kỳ). Không phân tích cú pháp nội dung này theo phương thức lập trình.
html_attributions
: Một loạt các 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 duy nhất. Lưu ý: Đây là tổng hợp của tất cả các thuộc tính cho toàn bộ phản hồi tìm kiếm. Do đó, tất cả đối tượngPlaceResult
trong phản hồi đều chứa danh sách phân bổ giống hệt nhau.icon
trả về URL cho biểu tượng PNG màu 71px x 71px.icon_mask_base_uri
trả về URL cơ sở cho một biểu tượng không màu, trừ phần mở rộng .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 những thông tin sau:open_now
là một giá trị boolean cho biết địa điểm có mở cửa tại thời điểm hiện tại hay không (Không dùng nữa trong Thư viện địa điểm, API JavaScript cho Maps, hãy sử dụngutc_offset_minutes
).
place_id
là giá trị nhận dạng văn bản 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 yêu cầu Thông tin chi tiết về địa điểm. Tìm hiểu thêm về cách tham chiếu địa điểm bằng 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 các bài đánh giá tổng hợp của người dùng.types
Một loạt các 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ể trống. Chúng tôi có thể sẽ ra mắt các giá trị mới mà không cần thông báo trước. Hãy 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ố đường phố và vị trí, nhưng không phải là tỉnh/tiểu bang, mã bưu chính hoặc quốc gia. Ví dụ: Văn phòng của Úc ở Sydney có giá trịvicinity
là5/48 Pirrama Road, Pyrmont
.
Truy cập vào kết quả bổ sung
Theo mặc định, mỗi lượt tìm kiếm địa điểm 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 đa 60 kết quả, chia thành ba trang.
Bạn có thể xem các trang bổ sung thông qua đối tượng PlaceSearchPagination
. Để truy cập vào các trang khác, bạn phải thu thập đối tượng PlaceSearchPagination
thông qua hàm callback. Đối tượng PlaceSearchPagination
được xác định là:
hasNextPage
một thuộc tính boolean cho biết có thêm kết quả hay không.true
khi có thêm một trang kết quả.nextPage()
một hàm sẽ trả về tập hợp kết quả tiếp theo. Sau khi thực hiện tìm kiếm, bạn phải chờ hai giây trước khi có thể thấy trang kết quả tiếp theo.
Để xem tập hợp 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 kết quả tiếp theo. Xin lưu ý rằng mỗi lượt tìm kiếm sẽ được tính là một yêu cầu dựa trên hạn mức sử dụng của bạn.
Ví dụ bên dưới minh hoạ cách thay đổi hàm callback của bạn để nắm bắt đối tượng PlaceSearchPagination
, để bạn 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;
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, dịch vụ Địa điểm cũng có thể trả về thông tin chi tiết về một địa điểm cụ thể. Khi một địa điểm được trả về trong phản hồi tìm kiếm địa điểm, hệ thống có thể sử dụng mã địa điểm để yêu cầu thông tin chi tiết bổ sung về địa điểm đó, chẳng hạn như địa chỉ đầy đủ, số điện thoại, điểm xếp hạng từ người dùng và bài đánh giá, v.v.
Yêu cầu thông tin chi tiết về địa điểm
Thông tin chi tiết về địa điểm được yêu cầu qua một lệnh gọi đến phương thức getDetails()
của dịch vụ.
service = new google.maps.places.PlacesService(map); service.getDetails(request, callback);
Phương thức này sẽ nhận một yêu cầu, chứa placeId
của địa điểm mong muốn và các trường cho biết những loại dữ liệu Địa điểm sẽ trả về. Tìm hiểu thêm về cách tham chiếu địa điểm có mã địa điểm.
Phương thức này cũng cần một phương thức gọi lại. Phương thức này cần xử lý mã trạng thái được truyền vào phản hồi google.maps.places.PlacesServiceStatus
, cũng như đố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); } }
Trường (Chi tiết địa điểm)
Thông sốfields
nhận một mảng chuỗi (tên trường).
Sử 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_component', 'opening_hours', 'geometry']
.
Sử dụng dấu chấm khi chỉ định các giá trị phức hợp. Ví dụ: opening_hours.weekday_text
.
Các trường tương ứng với kết quả Chi tiết về địa điểm và được chia thành 3 danh mục thanh toán: Cơ bản, Liên hệ và Khí quyển. Các trường cơ bản được lập hóa đơn theo mức cơ bản và không tính thêm phí. Các trường Địa chỉ liên hệ và Khí quyển được thanh toán ở mức giá cao hơn. Xem bảng giá để biết thêm thông tin. Mô hình phân bổ (html_attributions
) luôn
được trả về với mọi lệnh gọi, bất kể lệnh gọi đó có được yêu cầu hay không.
Cơ bản
Danh mục Cơ bản bao gồm các trường sau:
address_component
, adr_address
, business_status
,
formatted_address
, geometry
, icon
,
icon_mask_base_uri
, icon_background_color
,name
,
permanently_closed
(đã ngừng hoạt động),
photo
, place_id
, plus_code
, type
,
url
, utc_offset
(Deprecated, 22,
2,
Liên hệ
Danh mục Liên hệ bao gồm các trường sau:
formatted_phone_number
, international_phone_number
,
opening_hours
, website
Môi trường
Danh mục Khí quyển bao gồm các trường sau:
price_level
, rating
, reviews
,
user_ratings_total
Tìm hiểu thêm về trường địa điểm. Để biết thêm thông tin về cách tính phí yêu cầu dữ liệu địa điểm, hãy xem phần Mức sử dụng và thanh toán.
Câu trả lời 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 yêu cầu Thông tin chi tiết về địa điểm không thành công. Các giá trị trạng thái có thể 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 đã vượt quá hạn mức yêu cầu.NOT_FOUND
Không tìm thấy vị trí được tham chiếu trong cơ sở dữ liệu Địa điểm.REQUEST_DENIED
: Trang web này không được phép sử dụng PlacesService.UNKNOWN_ERROR
: Không thể xử lý yêu cầu PlacesService 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ả cho yêu cầu này.
Kết quả về thông tin chi tiết về địa điểm
Lệnh gọi getDetails()
thành công sẽ trả về đối tượng PlaceResult
có các thuộc tính sau:
address_components
: Một mảng chứa các thành phần riêng biệt á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 thành phần địa chỉ. Hãy xem danh sách các loại được hỗ trợ.long_name
là phần mô tả bằng văn bản đầy đủ hoặc tên của thành phần địa chỉ do Trình mã hoá địa lý trả về.short_name
là tên văn bản viết tắt của thành phần địa chỉ (nếu có). Ví dụ: thành phần địa chỉ cho tiểu bang Alaska có thể cólong_name
là "Alaska" và mộtshort_name
là "AK" sử dụng chữ viết tắt gồm 2 chữ cái.
Hãy lưu ý những dữ kiện sau về mảng
address_components[]
:- Dãy thành phần địa chỉ có thể chứa nhiều thành phần hơn
formatted_address
. - Mảng không nhất thiết phải bao gồm tất cả thực thể chính trị có chứa địa chỉ, ngoài những thực thể có trong
formatted_address
. Để truy xuất tất cả thực thể chính trị có chứa địa chỉ cụ thể, bạn nên sử dụng quy trình mã hoá địa lý đảo ngược, chuyển vĩ độ/kinh độ của địa chỉ dưới dạng thông số cho yêu cầu. - Định dạng của phản hồi không được đảm bảo sẽ vẫn giữ nguyên giữa các yêu cầu. Cụ thể, số lượng
address_components
sẽ khác nhau tùy theo địa chỉ được yêu cầu và có thể thay đổi theo thời gian đối với cùng một địa chỉ. Một thành phần có thể thay đổi vị trí trong mảng. Loại thành phần có thể thay đổi. Thành phần cụ thể có thể bị thiếu trong phản hồi sau.
business_status
cho biết trạng thái hoạt động của địa điểm, nếu đó là một doanh nghiệp. Thuộc tính này có thể chứa một trong những giá trị sau:OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
sẽ không được trả về.formatted_address
: Địa chỉ mà người dùng có thể đọc được của địa điểm này.Thông thường, địa chỉ này tương đương với địa chỉ bưu điện. Xin lưu ý rằng một số quốc gia, 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 thực sự do các hạn chế cấp phép.
Địa chỉ được định dạng bao gồm một hoặc nhiều thành phần địa chỉ theo logic. Ví dụ: địa chỉ "111 8th Avenue, New York, NY" bao gồm các thành phần sau: "111" (số đường phố), "8th Avenue" (tuyến đường), "New York" (thành phố) và "NY" (tiểu bang Hoa Kỳ).
Không được 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ẻ mà phản hồi API bao gồm ngoài 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ố điện thoại.geometry
: Thông tin liên quan đến hình học của địa điểm. Hành động sửa đổi 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 xem địa điểm này.
permanently_closed
(không dùng nữa) là cờ boolean cho biết địa điểm đã tắt vĩnh viễn hoặc tạm thời (giá trịtrue
). Không sử dụngpermanently_closed
. Thay vào đó, hãy sử dụngbusiness_status
để biết trạng thái hoạt động của các doanh nghiệp.- (
plus_code
Bạn có thể sử dụng mã cộng để thay thế địa chỉ đường phố ở những nơi không có mã (các toà nhà không được đánh số hoặc không được đặt tên).Plus code được định dạng là mã chung và mã phức hợp:
global_code
là mã vùng gồm 4 ký tự và mã cục bộ dài 6 ký tự trở lên (849VCWC8+R9).compound_code
là một mã địa phương dài 6 ký tự trở lên có vị trí rõ ràng (CWC8+R9, Mountain View, CA, Hoa Kỳ). Không phân tích cú pháp nội dung này theo phương thức lập trình.
html_attributions
: Văn bản thuộc tính sẽ hiển thị cho kết quả địa điểm này.icon
: URL đến một tài nguyên hình ảnh có thể dùng để biểu thị loại địa điểm này.international_phone_number
chứa số điện thoại của địa điểm ở định dạng quốc tế. Định dạng quốc tế bao gồm mã quốc gia và có dấu cộng (+) ở đầu. Ví dụ:international_phone_number
của văn phòng Google ở Úc, Úc 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ụngutc_offset_minutes
.utc_offset_minutes
chứa số phút theo múi giờ hiện tại của địa điểm này so với giờ UTC. Ví dụ: đối với những địa điểm ở Sydney, Úc trong giờ mùa hè, giá trị này sẽ là 660 (+11 giờ so với giờ UTC) và đối với những địa điểm ngoài California theo giờ mùa hè, giá trị này sẽ là -480 (theo giờ UTC).opening_hours
chứa các thông tin sau:open_now
(Không dùng nữa trong Thư viện địa điểm, API Maps JavaScript; hãy sử dụng Open_hours.isOpen(). Xem video này để biết cách sử dụngisOpen
cùng với Thông tin chi tiết về địa điểm.) là một giá trị boolean cho biết địa điểm có đang mở cửa tại thời điểm hiện tại hay không.periods[]
là một loạt các khoảng thời gian mở cửa trong 7 ngày, bắt đầu từ Chủ Nhật, theo thứ tự thời gian. Mỗi giai đoạn 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 ở định dạng hhmm 24 giờ (giá trị nằm trong khoảng 0000–2359).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ở, câu trả lời sẽ bị thiếu phầnclose
. Các ứng dụng có thể dựa vào trạng thái luôn mở là khoảng thời gianopen
chứaday
có giá trị 0 vàtime
có giá trị 0000 và không cóclose
.
weekday_text
là một mảng gồm bảy chuỗi đại diện cho giờ mở cửa được định dạng cho mỗi ngày trong tuần. Nếu tham sốlanguage
được chỉ định trong yêu cầu Thông tin chi tiết về địa điểm, thì Dịch vụ địa điểm sẽ định dạng và bản địa hoá giờ mở cửa phù hợp cho ngôn ngữ đó. Thứ tự của các phần tử trong mảng này phụ thuộc vào tham sốlanguage
. Một số ngôn ngữ bắt đầu từ tuần thứ Hai và các ngôn ngữ khác bắt đầu vào Chủ Nhật.
permanently_closed
(không dùng nữa) là cờ boolean cho biết địa điểm đã tắt vĩnh viễn hoặc tạm thời (giá trịtrue
). Không sử dụngpermanently_closed
. Thay vào đó, hãy sử dụngbusiness_status
để biết trạng thái hoạt động của các doanh nghiệp.photos[]
: một mảng các đối tượngPlacePhoto
. Bạn có thể sử dụngPlacePhoto
để lấy ảnh bằng phương thứcgetUrl()
hoặc bạn có thể kiểm tra đối tượng để biết 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ẽ hiển thị cùng với ảnh địa điểm này.
place_id
: Giá trị nhận dạng văn bản xác định duy nhất một địa điểm và có thể dùng để truy xuất thông tin về địa điểm qua yêu cầu Thông tin chi tiết về địa điểm. Tìm hiểu thêm về cách tham chiếu địa điểm bằng mã địa điểm.rating
: Điểm xếp hạng của địa điểm, từ 0 đến 5, dựa trên các 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 loạt các đối tượngPlaceAspectRating
, mỗi đối tượng cung cấp điểm xếp hạng cho 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ỗiPlaceAspectRating
đượ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
,quality
vàservice
.rating
điểm xếp hạng của người dùng cho khía cạnh cụ thể này, 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 quy cho "Người dùng Google". Nếu bạn đặt một tham số ngôn ngữ, thì cụm từ "Một người dùng Google" sẽ trả về một chuỗi đã được bản địa hoá.author_url
URL tới hồ sơ trên Google+ của người dùng, nếu có.language
mã ngôn ngữ IETF cho biết ngôn ngữ được sử dụng trong bài đánh giá của người dùng. Trường này chỉ chứa thẻ ngôn ngữ chính, chứ không chứa thẻ phụ cho biết quốc gia hoặc khu vực. Ví dụ: tất cả các bài đánh giá bằng tiếng Anh đều được gắn thẻ "en" chứ không phải "en-AU" hoặc "en-UK", v.v.rating
điểm xếp hạng chung của người dùng cho địa điểm này. Đâ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 sử dụng Google Địa điểm để đánh giá một vị trí, các bài đánh giá về văn bản được xem là không bắt buộc. Do đó, trường này có thể trống.
types
Một loạt các 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ể trống. Chúng tôi có thể sẽ ra mắt các giá trị mới mà không cần thông báo trước. Hãy xem danh sách các loại được hỗ trợ.url
: URL của trang Google chính thức cho địa điểm này. Đây là trang do Google sở hữu, có chứa thông tin tốt nhất về địa điểm này. Các ứng dụng phải liên kết 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 cho người dùng.vicinity
: Địa chỉ đơn giản cho địa điểm, bao gồm tên đường, số đường phố và vị trí, nhưng không phải là tỉnh/tiểu bang, mã bưu chính hoặc quốc gia. Ví dụ: Văn phòng của Úc ở Sydney có giá trịvicinity
là5/48 Pirrama Road, Pyrmont
. Thuộc tínhvicinity
chỉ được trả về cho một tính năng Tìm kiếm lân cận.website
liệt kê trang web có căn cứ đáng tin tại địa điểm này, chẳng hạn như trang chủ của một doanh nghiệp.
Lưu ý: Xếp hạng đa chiều có thể không có sẵn cho tất cả các vị trí. Nếu có quá ít bài đánh giá, phản hồi chi tiết sẽ bao gồm điểm xếp hạng cũ trên thang điểm từ 0,0 đến 5 (nếu có) hoặc hoàn toàn không có điểm xếp hạng.
Tham chiếu địa điểm bằng mã địa điểm
Mã địa điểm là một tham chiếu duy nhất đến một địa điểm trên Google Maps. Bạn có thể sử dụng mã địa điểm cho hầu hết các địa điểm, bao gồm doanh nghiệp, địa danh, công viên và giao lộ.
Để sử dụng mã địa điểm trong ứng dụng, trước tiên bạn phải tìm mã nhận dạng này trong PlaceResult
của yêu cầu Tìm kiếm địa điểm hoặc Thông tin chi tiết.
Sau đó, bạn có thể sử dụng mã địa điểm này để tra cứu Thông tin chi tiết về địa điểm.
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(a) 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ữ giá trị mã địa điểm để sử dụng sau này. Để biết các phương pháp hay nhất khi lưu trữ mã địa điểm, hãy xem nội dung 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 Địa điểm chụp ảnh cho phép bạn thêm nội dung nhiếp ảnh chất lượng cao vào trang web. Dịch vụ Ảnh cho phép bạ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 nhận được thông tin địa điểm bằng cách sử dụng yêu cầu Thông tin chi tiết về địa điểm, các tham chiếu ảnh sẽ được trả về cho nội dung ảnh có liên quan. Các yêu cầu Tìm kiếm lân cận và Tìm kiếm văn bản cũng trả về một tệp tham chiếu ảnh duy nhất cho mỗi địa điểm, khi thích hợp. Khi sử dụng dịch vụ Photos, bạn có thể truy cập vào các ảnh được tham chiếu và đổi kích thước hình ảnh sang kích thước tối ưu cho ứng dụng.
Một mảng các đối tượng PlacePhoto
sẽ được trả về như một phần của đối tượng PlaceResult
cho bất kỳ yêu cầu getDetails()
, textSearch()
hoặc nearbySearch()
nào được thực hiện dựa trên PlacesService
.
Lưu ý: Số lượng ảnh trả về sẽ khác nhau tùy theo yêu cầu.
- Một 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 đối tượng
PlacePhoto
. - Yêu cầu Thông tin chi tiết sẽ trả về tối đa mười đối tượng
PlacePhoto
.
Bạn có thể yêu cầu URL cho hình ảnh liên kết bằng cách gọi phương thức PlacePhoto.getUrl()
và chuyển một đối tượng PhotoOptions
hợp lệ. Đố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 cho hình ảnh. Nếu bạn chỉ định một giá trị cho cả maxHeight
và maxWidth
, thì 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 vẫn duy trì tỷ lệ khung hình gốc.
Đoạn mã sau đây chấp nhận đối tượng địa điểm và thêm đ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ằng một phiên bản nhỏ của ả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 do dịch vụ Ảnh trả về có nguồn từ nhiều vị trí, bao gồm chủ doanh nghiệp và ảnh do người dùng đóng góp. Trong hầu hết trường hợp, bạn có thể sử dụng các ảnh này mà không cần ghi nhận tác giả hoặc sẽ đưa vào thuộc tính hình ảnh kèm theo thuộc tính bắt buộc. Tuy nhiên, nếu phần tử photo
được trả về bao gồm một giá trị trong trường html_attributions
, thì bạn phải đưa thêm thuộc tính vào ứng dụng để hiển thị hình ảnh.