'জায়গা অটোমেটিক সম্পূর্ণ করা' হল Maps JavaScript API-এর Places লাইব্রেরির একটি ফিচার। Google Maps-এর সার্চ ফিল্ডে টাইপ-অহেড-সার্চের মতো আচরণ আপনার অ্যাপ্লিকেশনে দিতে, আপনি 'অটোমেটিক সম্পূর্ণ হওয়া' ফিচার ব্যবহার করতে পারবেন।
এই পৃষ্ঠায় পুরনো ও নতুন 'জায়গা অটোমেটিক সম্পূর্ণ করা' ফিচারের মধ্যে পার্থক্য ব্যাখ্যা করা হয়েছে। দুটি ভার্সনেই 'অটোমেটিক সম্পূর্ণ' ফিচার ইন্টিগ্রেট করার দুটি সাধারণ উপায় আছে:
- প্রোগ্রামাটিক ইন্টারফেস: ডেভেলপারদের জন্য যারা অটোকমপ্লিট অভিজ্ঞতা আরও বেশি কাস্টমাইজ ও নিয়ন্ত্রণ করতে চান।
- জায়গা অটোমেটিক সম্পূর্ণ করার উইজেট: একটি সার্চ বার যা ম্যাপ বা ওয়েব পেজে এম্বেড করা যেতে পারে।
অটোমেটিক সম্পূর্ণ করার প্রোগ্র্যামাটিক ইন্টারফেস
Places Autocomplete Service (legacy) এবং Autocomplete Data API (নতুন)-এর মধ্যে প্রোগ্রাম্যাটিক Place Autocomplete ব্যবহারের ক্ষেত্রে কিছু প্রধান পার্থক্য নিম্নলিখিত টেবিলে তালিকাভুক্ত করা হয়েছে:
PlacesService (লিগ্যাসি) |
Place (নতুন) |
|---|---|
| Places Autocomplete Service রেফারেন্স | অটোকমপ্লিট ডেটা (নতুন) রেফারেন্স |
AutocompletionRequest |
AutocompleteRequest |
AutocompleteService.getPlacePredictions |
AutocompleteSuggestion.fetchAutocompleteSuggestions |
AutocompletePrediction |
PlacePrediction |
ফলাফল অবজেক্ট ও
PlacesServiceStatus উত্তর ম্যানেজ করার জন্য মেথডে কলব্যাক ব্যবহার করতে হয়। |
প্রমিস ব্যবহার করে এবং অ্যাসিঙ্ক্রোনাস পদ্ধতিতে কাজ করে। |
পদ্ধতিগুলির জন্য PlacesServiceStatus চেক প্রয়োজন। |
স্ট্যাটাস চেক করার প্রয়োজন নেই, স্ট্যান্ডার্ড সমস্যা সমাধান ব্যবহার করা যাবে। আরও জানুন। |
Autocomplete ইনস্ট্যান্স তৈরি করার সময়
জায়গার ডেটা ফিল্ড বিকল্প হিসেবে সেট করা হয়। |
fetchFields() কল করা হলে, পরে প্লেস ডেটা ফিল্ড সেট করা হয়। |
কোয়েরি সংক্রান্ত পূর্বাভাস কাজ করে (শুধুমাত্র SearchBox)। |
Autocomplete ক্লাসে কোয়েরি পূর্বাভাস উপলভ্য নেই। |
| জায়গার ধরন এবং জায়গার ডেটা ফিল্ডের একটি নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। | জায়গার ধরন এবং জায়গার ডেটা ফিল্ড-এর আরও বেশি বিকল্প অ্যাক্সেস করার সুবিধা। |
নিম্নলিখিতগুলি পুরনো ও নতুন, উভয় অটোকমপ্লিট API-এর মাধ্যমে ব্যবহার করা হয়:
কোডের তুলনা (প্রোগ্র্যামাটিক)
এই বিভাগে, প্রোগ্রাম্যাটিক ইন্টারফেসের জন্য, Places Service এবং Place ক্লাসের মধ্যে পার্থক্য বোঝাতে, অটোকমপ্লিটের কোড তুলনা করা হয়েছে।
অটোমেটিক সম্পূর্ণ করার পূর্বাভাষ (পুরনো) ফিরিয়ে আনুন
পুরনো Places Service আপনাকে প্রোগ্রাম্যাটিক্যালি অটোমেটিক সম্পূর্ণ করার পূর্বাভাষ
পুনরুদ্ধার করতে দেয়, যাতে Autocomplete ক্লাস দ্বারা অফার করা ইউজার ইন্টারফেসের
চেয়ে বেশি নিয়ন্ত্রণ পাওয়া যায়। নিচের উদাহরণে,
"par"-এর জন্য একটি অনুরোধ করা হয়েছে, যার মধ্যে AutocompletionRequest রয়েছে। এর মধ্যে
ইনপুট ভ্যালু এবং প্রেডিকশনকে বায়াস করার জন্য বাউন্ডের একটি সেট রয়েছে। উদাহরণটি
AutocompletePrediction
ইনস্ট্যান্সের
একটি তালিকা ফেরত দেয় এবং প্রতিটির বিবরণ দেখায়। এছাড়াও, উদাহরণ হিসেবে দেখানো ফাংশনটি
সেশন টোকেন তৈরি করে এবং অনুরোধে তা প্রয়োগ করে।
function init() {
const placeInfo = document.getElementById("prediction");
const service = new google.maps.places.AutocompleteService();
const placesService = new google.maps.places.PlacesService(placeInfo);
var sessionToken = new google.maps.places.AutocompleteSessionToken();
// Define request options.
let request = {
input: "par",
sessionToken: sessionToken,
bounds: {
west: -122.44,
north: 37.8,
east: -122.39,
south: 37.78,
},
}
// Display the query string.
const title = document.getElementById("title");
title.appendChild(
document.createTextNode('Place predictions for "' + request.input + '":'),
);
// Perform the query and display the results.
const displaySuggestions = function (predictions, status) {
// Check the status of the Places Service.
if (status != google.maps.places.PlacesServiceStatus.OK || !predictions) {
alert(status);
return;
}
predictions.forEach((prediction) => {
const li = document.createElement("li");
li.appendChild(document.createTextNode(prediction.description));
document.getElementById("results").appendChild(li);
});
const placeRequest = {
placeId: predictions[0].place_id,
fields: ["name", "formatted_address"],
};
placesService.getDetails(placeRequest, (place, status) => {
if (status == google.maps.places.PlacesServiceStatus.OK && place) {
placeInfo.textContent = `
First predicted place: ${place.name} at ${place.formatted_address}`
}
});
};
// Show the results of the query.
service.getPlacePredictions(request, displaySuggestions);
}
- প্রোগ্রাম্যাটিক উপায়ে 'জায়গা অটোমেটিক সম্পূর্ণ করা' পরিষেবার সাজেশন পাওয়া
- জায়গা অটোমেটিক সম্পূর্ণ করার উদাহরণ
- সেশন টোকেন
AutocompletionRequestরেফারেন্সAutocompletePredictionরেফারেন্স
অটোমেটিক সম্পূর্ণ করার পূর্বানুমান রিট্রিভ করা (নতুন)
নতুন Place ক্লাস আপনাকে PlaceAutocompleteElement ক্লাসের অফার করা ইউজার ইন্টারফেসের উপর আরও বেশি কন্ট্রোলের জন্য প্রোগ্রাম্যাটিক্যালি অটোমেটিক সম্পূর্ণ করার পূর্বাভাষ ফিরিয়ে আনার সুবিধা দেয়। নিচের
উদাহরণে, "par"-এর জন্য একটি অনুরোধ করা হয়েছে, যার মধ্যে
AutocompleteRequest ইনপুট ভ্যালু এবং প্রেডিকশনকে বায়াস করার জন্য
সীমার একটি সেট রয়েছে। উদাহরণটি placePrediction
ইনস্ট্যান্সের একটি তালিকা রিটার্ন করে এবং প্রত্যেকটির বিবরণ দেখায়। এছাড়াও, উদাহরণ ফাংশনটি
একটি সেশন টোকেন তৈরি করে এবং অনুরোধে সেটি প্রয়োগ করে।
async function init() {
let sessionToken = new google.maps.places.AutocompleteSessionToken();
// Define request options.
let request = {
input: "par",
sessionToken: sessionToken,
locationBias: {
west: -122.44,
north: 37.8,
east: -122.39,
south: 37.78,
},
};
// Display the query string.
const title = document.getElementById("title");
title.appendChild(
document.createTextNode('Place predictions for "' + request.input + '":'),
);
// Perform the query and display the results.
const { suggestions } =
await google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(request);
const resultsElement = document.getElementById("results");
for (let suggestion of suggestions) {
const placePrediction = suggestion.placePrediction;
const listItem = document.createElement("li");
listItem.appendChild(
document.createTextNode(placePrediction.text.text),
);
resultsElement.appendChild(listItem);
}
// Show the first predicted place.
let place = suggestions[0].placePrediction.toPlace();
await place.fetchFields({
fields: ["displayName", "formattedAddress"],
});
const placeInfo = document.getElementById("prediction");
placeInfo.textContent = `
First predicted place: ${place.displayName} at ${place.formattedAddress}`
}
- Place Autocomplete Data API
- জায়গা অটোমেটিক সম্পূর্ণ করার ডেটা সংক্রান্ত পূর্বাভাসের উদাহরণ
- জায়গা অটোমেটিক সম্পূর্ণ করার ডেটা সেশনের উদাহরণ
- সেশন টোকেন
AutocompleteRequestইন্টারফেস রেফারেন্সAutocompleteSuggestionক্লাস রেফারেন্সPlacePredictionক্লাস রেফারেন্স
প্লেস অটো-কমপ্লিট উইজেট
নিচের সারণীতে Places পরিষেবা (লিগ্যাসি) এবং Place ক্লাস (নতুন)-এর মধ্যে অটো-কমপ্লিট উইজেট ব্যবহারের কিছু প্রধান পার্থক্য তালিকাভুক্ত করা হয়েছে:
| Places Service (লিগ্যাসি) | জায়গা (নতুন) |
|---|---|
জায়গার পূর্বাভাসের জন্য
Autocomplete ক্লাস।
|
জায়গার পূর্বাভাসের জন্য
PlaceAutocompleteElement ক্লাস।
|
কোয়েরি পূর্বাভাসের জন্য
SearchBox ক্লাস। |
Autocomplete ক্লাসে কোয়েরি পূর্বাভাস উপলভ্য নেই।
|
| শুধুমাত্র ডিফল্ট ইনপুট প্লেসহোল্ডার টেক্সট স্থানীয়করণ করা হয়। | টেক্সট ইনপুট প্লেসহোল্ডার, পূর্বাভাসের তালিকা লোগো এবং জায়গার পূর্বাভাস সব আঞ্চলিক লোকালাইজেশনকে সমর্থন করে। |
উইজেট
setBounds() বা autocomplete.bindTo()
ব্যবহার করে নির্দিষ্ট সীমার মধ্যে সার্চ সীমাবদ্ধ (বায়াস) করে এবং
strictBounds ব্যবহার করে নির্দিষ্ট সীমার মধ্যে ফলাফল
সীমাবদ্ধ করে।
|
নির্দিষ্ট সীমার মধ্যে ফলাফলকে পক্ষপাতদুষ্ট করতে উইজেট locationBias
প্রপার্টি এবং নির্দিষ্ট সীমার মধ্যে সার্চ সীমাবদ্ধ করতে locationRestriction
প্রপার্টি ব্যবহার করে।
|
| স্ট্যান্ডার্ড HTML ইনপুট এলিমেন্ট ব্যবহার করেই শুধু উইজেট ইন্টিগ্রেট করা যাবে। | স্ট্যান্ডার্ড HTML ইনপুট এলিমেন্ট বা একটি
gmp-place-autocomplete এলিমেন্ট ব্যবহার করে উইজেট ইন্টিগ্রেট করা যেতে পারে। |
| উইজেট ব্যবহার করার সময়, ব্যবহারকারী এমন কিছু অনুরোধ করতে পারেন যা হয়ত সঠিক নয় (যেমন "bisneyland"); এই ধরনের পরিস্থিতি স্পষ্টভাবে ম্যানেজ করতে হবে। | উইজেট শুধুমাত্র প্রদত্ত সাজেশনের ফলাফল দেখাবে এবং যথেচ্ছ ভ্যালুর জন্য অনুরোধ করতে পারবে না; তাই সম্ভাব্য অবৈধ অনুরোধ হ্যান্ডেল করার প্রয়োজন নেই। |
পুরনো
PlaceResult ইনস্ট্যান্স ফিরিয়ে দেয়। |
Place ইনস্ট্যান্স ফেরত দেয়। |
Autocomplete
অবজেক্টের বিকল্প হিসেবে জায়গার ডেটা ফিল্ড সেট করা হয়। |
ব্যবহারকারী কোনও কিছু বেছে নিলে প্লেস ডেটা ফিল্ড সেট করা হয় এবং
fetchFields() কল করা হয়। |
| জায়গার ধরন এবং জায়গার ডেটা ফিল্ডের একটি নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। | জায়গার ধরন ও জায়গা সংক্রান্ত ডেটা ফিল্ড-এর বর্ধিত নির্বাচনের অ্যাক্সেস। |
কোড তুলনা (উইজেট)
এই বিভাগে, পুরনো প্লেস অটোকমপ্লিট উইজেট এবং নতুন প্লেস অটোকমপ্লিট এলিমেন্টের মধ্যে পার্থক্য বোঝাতে অটোকমপ্লিটের কোড তুলনা করা হয়েছে।
জায়গা অটোমেটিক সম্পূর্ণ করার উইজেট (লিগ্যাসি)
Places Service দুই ধরনের অটোকমপ্লিট উইজেট অফার করে, যা আপনি Autocomplete এবং SearchBox ক্লাস ব্যবহার করে যোগ করতে পারবেন।
প্রতিটি ধরনের উইজেটকে ম্যাপ কন্ট্রোল হিসেবে ম্যাপে যোগ করা যেতে পারে অথবা সরাসরি কোনও ওয়েবপেজে
এম্বেড করা যেতে পারে। নিম্নলিখিত কোডের উদাহরণে ম্যাপ কন্ট্রোল হিসেবে Autocomplete
উইজেট এম্বেড করা দেখানো হয়েছে।
Autocompleteউইজেট কনস্ট্রাক্টর দুটি আর্গুমেন্ট নেয়:textধরনের HTMLinputএলিমেন্ট। এটি হল ইনপুট ফিল্ড যা অটোমেটিক সম্পূর্ণ হওয়ার পরিষেবা মনিটর করবে এবং এর ফলাফল অ্যাটাচ করবে।- একটি ঐচ্ছিক
AutocompleteOptionsআর্গুমেন্ট, যেখানে কোয়েরি সীমাবদ্ধ করার জন্য আপনি আরও বিকল্প নির্দিষ্ট করতে পারেন।
- বাউন্ড সেট করতে,
autocomplete.bindTo()কল করেAutocompleteইনস্ট্যান্সকে ম্যাপের সাথে স্পষ্টভাবে বাউন্ড করা যেতে পারে। - অটো-কমপ্লিটের জন্য বিকল্পে জায়গার ডেটা ফিল্ড নির্দিষ্ট করুন।
function initMap() {
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 40.749933, lng: -73.98633 },
zoom: 13,
mapTypeControl: false,
});
const card = document.getElementById("pac-card");
const input = document.getElementById("pac-input");
const options = {
fields: ["formatted_address", "geometry", "name"],
strictBounds: false,
};
map.controls[google.maps.ControlPosition.TOP_LEFT].push(card);
const autocomplete = new google.maps.places.Autocomplete(input, options);
// Bind the map's bounds (viewport) property to the autocomplete object,
// so that the autocomplete requests use the current map bounds for the
// bounds option in the request.
autocomplete.bindTo("bounds", map);
const infowindow = new google.maps.InfoWindow();
const infowindowContent = document.getElementById("infowindow-content");
infowindow.setContent(infowindowContent);
const marker = new google.maps.Marker({
map,
anchorPoint: new google.maps.Point(0, -29),
});
autocomplete.addListener("place_changed", () => {
infowindow.close();
marker.setVisible(false);
const place = autocomplete.getPlace();
if (!place.geometry || !place.geometry.location) {
// User entered the name of a Place that was not suggested and
// pressed the Enter key, or the Place Details request failed.
window.alert("No details available for input: '" + place.name + "'");
return;
}
// If the place has a geometry, then present it on a map.
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17);
}
marker.setPosition(place.geometry.location);
marker.setVisible(true);
infowindowContent.children["place-name"].textContent = place.name;
infowindowContent.children["place-address"].textContent =
place.formatted_address;
infowindow.open(map, marker);
});
}
- জায়গা অটোমেটিক সম্পূর্ণ করা সংক্রান্ত ডকুমেন্টেশন
- জায়গা অটোমেটিক সম্পূর্ণ করার উইজেটের উদাহরণ
- Places Search Box-এর উদাহরণ
Autocompleteক্লাস রেফারেন্স
প্লেস অটোকমপ্লিট উইজেট (নতুন)
Place ক্লাস
PlaceAutocompleteElement অফার করে,
এটি একটি HTMLElement সাবক্লাস যা একটি UI কম্পোনেন্ট প্রদান করে যা ম্যাপ কন্ট্রোল হিসেবে ম্যাপে যোগ করা যেতে পারে, অথবা সরাসরি একটি ওয়েব পেজে এম্বেড করা যেতে পারে। নিচের কোড
উদাহরণে, ম্যাপ কন্ট্রোল হিসেবে PlaceAutocompleteElement উইজেট এম্বেড করা দেখানো হয়েছে।
জায়গা অটোমেটিক সম্পূর্ণ করার উইজেট নিম্নলিখিত উপায়ে উন্নত করা হয়েছে:
- অটোফিল উইজেট UI, টেক্সট ইনপুট প্লেসহোল্ডার, সাজেশন তালিকার লোগো এবং লোকেশন সংক্রান্ত সাজেশনের জন্য আঞ্চলিক লোকালাইজেশন (RTL ভাষা সহ) সাপোর্ট করে।
- স্ক্রিন রিডার ও কীবোর্ড ইন্টার্যাকশনের জন্য সহায়তা সহ উন্নত অ্যাক্সেসিবিলিটি।
- অটোফিল উইজেট, রিটার্ন করা অবজেক্ট ম্যানেজ করার প্রক্রিয়াকে সহজ করতে
নতুন
Placeক্লাস রিটার্ন করে। - মোবাইল ডিভাইস ও ছোট স্ক্রিনে আরও ভাল কাজ করে।
- আরও ভালো পারফর্ম্যান্স ও উন্নত গ্রাফিক্যাল অ্যাপিয়ারেন্স।
প্রয়োগের ক্ষেত্রে প্রধান পার্থক্যের মধ্যে এগুলি পড়ে:
PlaceAutocompleteElementনিজস্ব ইনপুট ফিল্ড প্রদান করে এবং HTML বা জাভাস্ক্রিপ্ট ব্যবহার করে সরাসরি পৃষ্ঠায় ইনসার্ট করা হয় (আগে থেকে থাকা ইনপুট এলিমেন্ট প্রদান করার পরিবর্তে)।- কোয়েরি পূর্বাভাস
Autocompleteক্লাসে উপলভ্য নেই। PlaceAutocompleteElementPlaceAutocompleteElementOptionsব্যবহার করে তৈরি করা হয়েছে।- জায়গার ডেটা ফিল্ড বেছে নেওয়ার সময় (যখন
fetchFields()কল করা হয়) নির্দিষ্ট করা হয়।
- জায়গার ডেটা ফিল্ড বেছে নেওয়ার সময় (যখন
locationBoundsঅথবাlocationRestrictionবিকল্প ব্যবহার করে বাউন্ড সেট করুন।
let map;
let marker;
let infoWindow;
async function initMap() {
// Request needed libraries.
const [{ Map }, { AdvancedMarkerElement }] = await Promise.all([
google.maps.importLibrary("marker"),
google.maps.importLibrary("places"),
]);
// Initialize the map.
map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 40.749933, lng: -73.98633 },
zoom: 13,
mapId: "4504f8b37365c3d0",
mapTypeControl: false,
});
const placeAutocomplete =
new google.maps.places.PlaceAutocompleteElement({
locationRestriction: map.getBounds(),
});
placeAutocomplete.id = "place-autocomplete-input";
const card = document.getElementById("place-autocomplete-card");
card.appendChild(placeAutocomplete);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(card);
// Create the marker and infowindow.
marker = new google.maps.marker.AdvancedMarkerElement({
map,
});
infoWindow = new google.maps.InfoWindow({});
// Add the gmp-select listener, and display the results on the map.
placeAutocomplete.addEventListener("gmp-select", async ( event ) => {
const place = event.placePrediction.toPlace();
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location", "viewport"],
});
// If the place has a geometry, then present it on a map.
if (place.viewport) {
map.fitBounds(place.viewport);
} else {
map.setCenter(place.location);
map.setZoom(17);
}
let content =
'<div id="infowindow-content">' +
'<span id="place-displayname" class="title">' +
place.displayName +
'</span><br />' +
'<span id="place-address">' +
place.formattedAddress +
'</span>' +
'</div>';
updateInfoWindow(content, place.location);
marker.position = place.location;
});
}
// Helper function to create an info window.
function updateInfoWindow(content, center) {
infoWindow.setContent(content);
infoWindow.setPosition(center);
infoWindow.open({
map,
anchor: marker,
shouldFocus: false,
});
}
- জায়গা অটোমেটিক সম্পূর্ণ করার উইজেট (প্রিভিউ) সংক্রান্ত ডকুমেন্টেশন
- জায়গা অটোমেটিক সম্পূর্ণ করার উইজেটের উদাহরণ
- প্লেস অটোমেটিক সম্পূর্ণ করার এলিমেন্টের উদাহরণ
PlaceAutocompleteElementক্লাস রেফারেন্স