Scribble Maps Blog
Nhà phát triển: Tiết kiệm tín dụng Google API với Autocomplete
Có rất nhiều người được lợi từ chính sách giá API mới của Google. Tuy nhiên, nếu ứng dụng của bạn đang sử dụng toàn bộ bộ tính năng bản đồ và bạn có nhiều người dùng, bạn có thể thấy ngân sách của mình bắt đầu giảm nhanh chóng. Hai chức năng sẽ rút trực tiếp từ ngân sách của bạn và không được áp dụng hạn mức miễn phí hàng ngày là tự động hoàn thành (autocomplete) và tìm kiếm địa điểm.
Nếu bạn sử dụng giấy phép Google của mình với Scribble Maps API, chúng tôi sẽ thực hiện một số tối ưu hóa này ngay khi thiết lập, nhưng nếu bạn đang xây dựng triển khai tùy chỉnh của riêng mình trực tiếp trên Google Maps API, có một bản cập nhật đơn giản bạn có thể thực hiện để tiết kiệm một số tín dụng autocomplete.
Chức năng tự động hoàn thành tiêu chuẩn sẽ gửi một yêu cầu tự động hoàn thành với mỗi thay đổi trong ô nhập liệu. Có thể cắt giảm đáng kể lượng tín dụng được sử dụng bằng cách đặt một khoảng thời gian chờ (timeout) khi ô nhập liệu thay đổi.
Dưới đây là một ví dụ rất cơ bản.
Vì vậy, mỗi khi người dùng bắt đầu nhập vào ô nhập liệu, tính năng tự động hoàn thành sẽ không kích hoạt cho đến khi có một khoảng trễ tạm thời. Khoảng trễ 250 mili giây có thể được giảm bớt để tính năng tự động hoàn thành kích hoạt thường xuyên hơn. Nếu người dùng nhập nhanh từ "Toronto", chỉ có một cuộc gọi tự động hoàn thành được thực hiện thay vì 8 cuộc gọi khi người dùng ngập ngừng.
Chúng tôi thấy rằng việc trì hoãn theo thời gian hoạt động tốt nhất. Một điểm quan trọng đối với việc này là đảm bảo rằng giao diện người dùng biểu thị rằng một tìm kiếm đang diễn ra khi họ đang nhập. Trong trường hợp của chúng tôi, chúng tôi sử dụng một biểu tượng xoay hoạt họa (animated spinner). Bằng cách này, nếu người dùng nhập nhanh và không thấy kết quả, biểu tượng xoay hoạt họa sẽ giúp họ tạm dừng đủ lâu để xem kết quả.
Cần lưu ý rằng việc triển khai phương pháp này là tuân thủ các điều khoản sử dụng hiện tại của họ. Tất cả những gì phương pháp này thực sự làm là điều tiết lượng cuộc gọi tự động hoàn thành gửi đi từ người dùng.
Nếu bạn sử dụng giấy phép Google của mình với Scribble Maps API, chúng tôi sẽ thực hiện một số tối ưu hóa này ngay khi thiết lập, nhưng nếu bạn đang xây dựng triển khai tùy chỉnh của riêng mình trực tiếp trên Google Maps API, có một bản cập nhật đơn giản bạn có thể thực hiện để tiết kiệm một số tín dụng autocomplete.
Chức năng tự động hoàn thành tiêu chuẩn sẽ gửi một yêu cầu tự động hoàn thành với mỗi thay đổi trong ô nhập liệu. Có thể cắt giảm đáng kể lượng tín dụng được sử dụng bằng cách đặt một khoảng thời gian chờ (timeout) khi ô nhập liệu thay đổi.
Dưới đây là một ví dụ rất cơ bản.
var acTimeOut;
textSearchInput.onkeyup = function() {
clearTimeout(acTimeout);
acTimeout = setTimeout(function() {
//put auto-complete calls in here
}, 250);
}
Vì vậy, mỗi khi người dùng bắt đầu nhập vào ô nhập liệu, tính năng tự động hoàn thành sẽ không kích hoạt cho đến khi có một khoảng trễ tạm thời. Khoảng trễ 250 mili giây có thể được giảm bớt để tính năng tự động hoàn thành kích hoạt thường xuyên hơn. Nếu người dùng nhập nhanh từ "Toronto", chỉ có một cuộc gọi tự động hoàn thành được thực hiện thay vì 8 cuộc gọi khi người dùng ngập ngừng.
Chúng tôi thấy rằng việc trì hoãn theo thời gian hoạt động tốt nhất. Một điểm quan trọng đối với việc này là đảm bảo rằng giao diện người dùng biểu thị rằng một tìm kiếm đang diễn ra khi họ đang nhập. Trong trường hợp của chúng tôi, chúng tôi sử dụng một biểu tượng xoay hoạt họa (animated spinner). Bằng cách này, nếu người dùng nhập nhanh và không thấy kết quả, biểu tượng xoay hoạt họa sẽ giúp họ tạm dừng đủ lâu để xem kết quả.
Cần lưu ý rằng việc triển khai phương pháp này là tuân thủ các điều khoản sử dụng hiện tại của họ. Tất cả những gì phương pháp này thực sự làm là điều tiết lượng cuộc gọi tự động hoàn thành gửi đi từ người dùng.