প্লেস অটোকম্পলিট হল ম্যাপস জাভাস্ক্রিপ্ট এপিআই-তে প্লেস লাইব্রেরির একটি বৈশিষ্ট্য। আপনি আপনার অ্যাপ্লিকেশনগুলিকে গুগল ম্যাপস সার্চ ফিল্ডের টাইপ-এহেড-সার্চ আচরণ দিতে অটোকম্পলিট ব্যবহার করতে পারেন।
এই পৃষ্ঠাটি লিগ্যাসি এবং নতুন প্লেস অটোকম্পলিট বৈশিষ্ট্যের মধ্যে পার্থক্য ব্যাখ্যা করে। উভয় সংস্করণেই অটোকম্পলিট সংহত করার দুটি সাধারণ উপায় রয়েছে:
- প্রোগ্রাম্যাটিক ইন্টারফেস : স্বয়ংক্রিয়ভাবে সম্পূর্ণ অভিজ্ঞতার উপর আরও বেশি কাস্টমাইজেশন এবং নিয়ন্ত্রণ খুঁজছেন এমন ডেভেলপারদের জন্য।
- প্লেস অটোকম্পলিট উইজেট : একটি সার্চ বার যা একটি মানচিত্র বা ওয়েব পৃষ্ঠায় এম্বেড করা যেতে পারে।
স্বয়ংক্রিয়ভাবে সম্পন্ন প্রোগ্রাম্যাটিক ইন্টারফেস
নিম্নলিখিত সারণীতে প্লেস অটোকম্পলিট সার্ভিস (লিগ্যাসি) এবং অটোকম্পলিট ডেটা এপিআই (নতুন) এর মধ্যে প্রোগ্রাম্যাটিক প্লেস অটোকম্পলিট ব্যবহারের কিছু প্রধান পার্থক্য তালিকাভুক্ত করা হয়েছে:
PlacesService (লিগ্যাসি) | Place (নতুন) |
|---|---|
| স্থান স্বয়ংসম্পূর্ণ পরিষেবা রেফারেন্স | স্বয়ংক্রিয়ভাবে সম্পূর্ণ ডেটা (নতুন) রেফারেন্স |
AutocompletionRequest | AutocompleteRequest |
AutocompleteService.getPlacePredictions | AutocompleteSuggestion.fetchAutocompleteSuggestions |
AutocompletePrediction | PlacePrediction |
পদ্ধতিগুলিতে ফলাফল অবজেক্ট এবং PlacesServiceStatus প্রতিক্রিয়া পরিচালনা করার জন্য একটি কলব্যাক ব্যবহার করা প্রয়োজন। | প্রতিশ্রুতি ব্যবহার করে এবং অ্যাসিঙ্ক্রোনাসভাবে কাজ করে। |
পদ্ধতিগুলির জন্য PlacesServiceStatus চেক প্রয়োজন। | কোনও স্ট্যাটাস চেকের প্রয়োজন নেই, স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করা যেতে পারে। আরও জানুন । |
যখন Autocomplete ইনস্ট্যান্স তৈরি করা হয় তখন প্লেস ডেটা ক্ষেত্রগুলি বিকল্প হিসাবে সেট করা হয়। | fetchFields() কল করার সময় প্লেস ডেটা ফিল্ডগুলি পরে সেট করা হয়। |
কোয়েরি ভবিষ্যদ্বাণী সমর্থিত (শুধুমাত্র SearchBox )। | Autocomplete ক্লাসে কোয়েরি ভবিষ্যদ্বাণী পাওয়া যায় না। |
| স্থানের ধরণ এবং স্থানের ডেটা ক্ষেত্রের একটি নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। | স্থানের ধরণ এবং স্থানের ডেটা ক্ষেত্রগুলির একটি বিস্তৃত নির্বাচনের অ্যাক্সেস। |
নিম্নলিখিতগুলি লিগ্যাসি এবং নতুন অটোকম্পলিট API উভয় দ্বারা ব্যবহৃত হয়:
কোড তুলনা (প্রোগ্রাম্যাটিক)
এই বিভাগটি প্রোগ্রাম্যাটিক ইন্টারফেসের জন্য প্লেস সার্ভিস এবং প্লেস ক্লাসের মধ্যে পার্থক্যগুলি চিত্রিত করার জন্য স্বয়ংসম্পূর্ণের কোড তুলনা করে।
স্বয়ংক্রিয়ভাবে সম্পূর্ণ হওয়া পূর্বাভাসগুলি পুনরুদ্ধার করুন (উত্তরাধিকার)
লিগ্যাসি প্লেসেস সার্ভিস আপনাকে প্রোগ্রাম্যাটিকভাবে অটোকম্পলিট ভবিষ্যদ্বাণী পুনরুদ্ধার করতে দেয়, যার ফলে 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}`
}
- প্লেস অটোকম্পলিট ডেটা এপিআই
- স্থান স্বয়ংসম্পূর্ণ ডেটা পূর্বাভাসের উদাহরণ
- স্বয়ংক্রিয়ভাবে সম্পন্ন ডেটা সেশনের উদাহরণ রাখুন
- সেশন টোকেন
-
AutocompleteRequestইন্টারফেস রেফারেন্স -
AutocompleteSuggestionক্লাস রেফারেন্স -
PlacePredictionক্লাস রেফারেন্স
স্থান স্বয়ংসম্পূর্ণ উইজেট
নিম্নলিখিত সারণীতে প্লেস পরিষেবা (লিগেসি) এবং প্লেস ক্লাস (নতুন) এর মধ্যে স্বয়ংসম্পূর্ণ উইজেট ব্যবহারের কিছু প্রধান পার্থক্য তালিকাভুক্ত করা হয়েছে:
| স্থান পরিষেবা (উত্তরাধিকার) | স্থান (নতুন) |
|---|---|
স্থান পূর্বাভাসের জন্য Autocomplete ক্লাস। | স্থান পূর্বাভাসের জন্য PlaceAutocompleteElement ক্লাস। |
SearchBox ক্লাসকোয়েরি পূর্বাভাসের জন্য। | Autocomplete ক্লাসে কোয়েরি ভবিষ্যদ্বাণী পাওয়া যায় না। |
| শুধুমাত্র ডিফল্ট ইনপুট প্লেসহোল্ডার টেক্সট স্থানীয়করণ করা হয়। | টেক্সট ইনপুট প্লেসহোল্ডার, ভবিষ্যদ্বাণী তালিকার লোগো এবং স্থানের ভবিষ্যদ্বাণী সবই আঞ্চলিক স্থানীয়করণ সমর্থন করে। |
উইজেট নির্দিষ্ট সীমার মধ্যে অনুসন্ধানকে সীমাবদ্ধ (পক্ষপাত) করতে setBounds() বা autocomplete.bindTo() ব্যবহার করে, এবং নির্দিষ্ট সীমার মধ্যে ফলাফল সীমাবদ্ধ করতে strictBounds ব্যবহার করে। | উইজেট ফলাফলকে নির্দিষ্ট সীমার মধ্যে সীমাবদ্ধ করতে locationBias প্রপার্টি ব্যবহার করে এবং locationRestriction প্রপার্টি ব্যবহার করে অনুসন্ধানকে নির্দিষ্ট সীমার মধ্যে সীমাবদ্ধ করে। |
| উইজেটগুলি কেবলমাত্র একটি স্ট্যান্ডার্ড HTML ইনপুট উপাদান ব্যবহার করেই সংহত করা যেতে পারে। | উইজেটটি একটি স্ট্যান্ডার্ড HTML ইনপুট উপাদান অথবা একটি gmp-place-autocomplete উপাদান ব্যবহার করে সংহত করা যেতে পারে। |
| উইজেট ব্যবহার করার সময়, ব্যবহারকারীরা এমন জিনিসগুলির জন্য অনুরোধ করতে পারেন যা বৈধ নাও হতে পারে (যেমন "বিসনিল্যান্ড"); এই ক্ষেত্রে স্পষ্টভাবে পরিচালনা করতে হবে। | উইজেটটি শুধুমাত্র প্রদত্ত পরামর্শের জন্য ফলাফল প্রদান করবে এবং ইচ্ছামত মানের জন্য অনুরোধ জারি করতে পারবে না; তাই সম্ভাব্য অবৈধ অনুরোধগুলি পরিচালনা করার কোন প্রয়োজন নেই। |
লিগ্যাসি PlaceResult ইনস্ট্যান্স ফেরত পাঠায়। | Place উদাহরণ প্রদান করে। |
স্থান তথ্য ক্ষেত্রগুলি Autocomplete বস্তুর জন্য বিকল্প হিসাবে সেট করা হয়। | ব্যবহারকারী যখন একটি নির্বাচন করে এবং fetchFields() কল করে তখন প্লেস ডেটা ক্ষেত্রগুলি সেট করা হয়। |
| স্থানের ধরণ এবং স্থানের ডেটা ক্ষেত্রের একটি নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। | স্থানের ধরণ এবং স্থানের ডেটা ক্ষেত্রগুলির একটি বিস্তৃত নির্বাচনের অ্যাক্সেস। |
কোড তুলনা (উইজেট)
এই বিভাগটি অটোকমপ্লিটের কোড তুলনা করে লিগ্যাসি প্লেস অটোকমপ্লিট উইজেট এবং নতুন প্লেস অটোকমপ্লিট এলিমেন্টের মধ্যে পার্থক্যগুলি তুলে ধরে।
প্লেস অটোকম্পলিট উইজেট (লিগেসি)
প্লেসেস সার্ভিস দুটি ধরণের অটোকম্পলিট উইজেট অফার করে, যা আপনি Autocomplete এবং SearchBox ক্লাস ব্যবহার করে যোগ করতে পারেন। প্রতিটি ধরণের উইজেট একটি ম্যাপে ম্যাপ কন্ট্রোল হিসেবে যোগ করা যেতে পারে, অথবা সরাসরি একটি ওয়েব পেজে এমবেড করা যেতে পারে। নিম্নলিখিত কোড উদাহরণে ম্যাপ কন্ট্রোল হিসেবে একটি Autocomplete উইজেট এম্বেড করার পদ্ধতি দেখানো হয়েছে।
-
Autocompleteউইজেট কনস্ট্রাক্টর দুটি আর্গুমেন্ট নেয়:-
textটাইপের একটি HTMLinputউপাদান। এটি হল সেই ইনপুট ক্ষেত্র যা স্বয়ংক্রিয়ভাবে সম্পূর্ণ পরিষেবা পর্যবেক্ষণ করবে এবং এর ফলাফল সংযুক্ত করবে। - একটি ঐচ্ছিক
AutocompleteOptionsআর্গুমেন্ট, যেখানে আপনি কোয়েরি সীমাবদ্ধ করার জন্য আরও বিকল্প নির্দিষ্ট করতে পারেন।
-
- সীমা নির্ধারণ করতে,
Autocompleteইনস্ট্যান্সটিautocomplete.bindTo()কল করে স্পষ্টভাবে মানচিত্রের সাথে আবদ্ধ করা যেতে পারে। - স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার বিকল্পগুলিতে স্থান ডেটা ক্ষেত্র নির্দিষ্ট করুন।
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);
});
}
- স্বয়ংসম্পূর্ণ ডকুমেন্টেশন রাখুন
- প্লেস অটোকম্পলিট উইজেটের উদাহরণ
- স্থান অনুসন্ধান বাক্সের উদাহরণ
-
Autocompleteক্লাসের রেফারেন্স পূরণ করুন
প্লেস অটোকম্পলিট উইজেট (নতুন)
Place ক্লাসটি PlaceAutocompleteElement অফার করে, এটি একটি HTMLElement সাবক্লাস যা একটি UI উপাদান প্রদান করে যা একটি মানচিত্রে একটি মানচিত্র নিয়ন্ত্রণ হিসাবে যোগ করা যেতে পারে, অথবা সরাসরি একটি ওয়েব পৃষ্ঠায় এম্বেড করা যেতে পারে। নিম্নলিখিত কোড উদাহরণটি একটি মানচিত্র নিয়ন্ত্রণ হিসাবে একটি PlaceAutocompleteElement উইজেট এম্বেড করার পদ্ধতি দেখায়।
প্লেস অটোকম্পলিট উইজেটটি নিম্নলিখিত উপায়ে উন্নত করা হয়েছে:
- অটোকম্পলিট উইজেট UI টেক্সট ইনপুট প্লেসহোল্ডার, ভবিষ্যদ্বাণী তালিকার লোগো এবং স্থানের ভবিষ্যদ্বাণীর জন্য আঞ্চলিক স্থানীয়করণ (RTL ভাষা সহ) সমর্থন করে।
- স্ক্রিন রিডার এবং কীবোর্ড ইন্টারঅ্যাকশনের জন্য সমর্থন সহ উন্নত অ্যাক্সেসযোগ্যতা।
- অটোকম্পলিট উইজেটটি ফেরত আসা বস্তুর পরিচালনা সহজ করার জন্য নতুন
Placeক্লাসটি ফেরত দেয়। - মোবাইল ডিভাইস এবং ছোট স্ক্রিনের জন্য আরও ভালো সাপোর্ট।
- উন্নত কর্মক্ষমতা এবং উন্নত গ্রাফিকাল চেহারা।
বাস্তবায়নের মূল পার্থক্যগুলির মধ্যে রয়েছে:
-
PlaceAutocompleteElementএর নিজস্ব ইনপুট ক্ষেত্র প্রদান করে এবং HTML বা JavaScript ব্যবহার করে সরাসরি পৃষ্ঠায় প্রবেশ করানো হয় (একটি বিদ্যমান ইনপুট উপাদান প্রদানের বিপরীতে)। -
Autocompleteক্লাসে কোয়েরি ভবিষ্যদ্বাণী পাওয়া যায় না। -
PlaceAutocompleteElementব্যবহার করে তৈরি করা হয়েছেPlaceAutocompleteElementOptions- স্থানের ডেটা ক্ষেত্রগুলি নির্বাচনের সময় নির্দিষ্ট করা হয় (যখন
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 ( place ) => {
const place = event.placePrediction.toPlace();
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// 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ক্লাস রেফারেন্স