ওভারভিউ
উচ্চতা পরিষেবা পৃথিবীর পৃষ্ঠের অবস্থানগুলির জন্য উচ্চতার ডেটা সরবরাহ করে, সমুদ্রের তলদেশে গভীরতার অবস্থানগুলি সহ (যা নেতিবাচক মান প্রদান করে)। সেসব ক্ষেত্রে যেখানে Google আপনার অনুরোধ করা সুনির্দিষ্ট অবস্থানে সঠিক উচ্চতা পরিমাপের অধিকারী নয়, পরিষেবাটি চারটি নিকটতম অবস্থান ব্যবহার করে একটি গড় মান প্রদান করবে।
ElevationService অবজেক্ট আপনাকে উচ্চতার ডেটার জন্য পৃথিবীর অবস্থান অনুসন্ধান করার জন্য একটি সহজ ইন্টারফেস প্রদান করে। অতিরিক্তভাবে, আপনি পাথ বরাবর নমুনাযুক্ত উচ্চতা ডেটার জন্য অনুরোধ করতে পারেন, যা আপনাকে রুট বরাবর সমপরিমাণ উচ্চতার পরিবর্তনগুলি গণনা করার অনুমতি দেয়। ElevationService অবজেক্ট Google Maps API এলিভেশন সার্ভিসের সাথে যোগাযোগ করে যা উচ্চতার অনুরোধ গ্রহণ করে এবং উচ্চতার ডেটা প্রদান করে।
এলিভেশন পরিষেবার সাহায্যে, আপনি হাইকিং এবং বাইকিং অ্যাপ্লিকেশন, মোবাইল পজিশনিং অ্যাপ্লিকেশন, বা কম রেজোলিউশন সমীক্ষা অ্যাপ্লিকেশন বিকাশ করতে পারেন।
শুরু হচ্ছে
মানচিত্র জাভাস্ক্রিপ্ট এপিআই-এ এলিভেশন পরিষেবা ব্যবহার করার আগে, প্রথমে নিশ্চিত করুন যে Google ক্লাউড কনসোলে এলিভেশন API সক্ষম করা আছে, একই প্রকল্পে আপনি মানচিত্র জাভাস্ক্রিপ্ট API-এর জন্য সেট আপ করেছেন।
আপনার সক্রিয় API এর তালিকা দেখতে:
- গুগল ক্লাউড কনসোলে যান।
- একটি প্রকল্প নির্বাচন করুন বোতামে ক্লিক করুন, তারপরে আপনি মানচিত্র জাভাস্ক্রিপ্ট API-এর জন্য সেট আপ করা একই প্রকল্প নির্বাচন করুন এবং খুলুন ক্লিক করুন।
- ড্যাশবোর্ডে API-এর তালিকা থেকে, এলিভেশন এপিআই সন্ধান করুন।
- আপনি যদি তালিকায় API দেখতে পান, আপনি সম্পূর্ণ প্রস্তুত। API তালিকাভুক্ত না হলে, এটি সক্ষম করুন:
- পৃষ্ঠার শীর্ষে, লাইব্রেরি ট্যাব প্রদর্শন করতে API ENABLE নির্বাচন করুন। বিকল্পভাবে, বাম পাশের মেনু থেকে, লাইব্রেরি নির্বাচন করুন।
- Elevation API অনুসন্ধান করুন, তারপর ফলাফল তালিকা থেকে এটি নির্বাচন করুন।
- ENABLE নির্বাচন করুন। প্রক্রিয়া শেষ হলে, এলিভেশন API ড্যাশবোর্ডে API-এর তালিকায় উপস্থিত হয়।
মূল্য এবং নীতি
মূল্য নির্ধারণ
জাভাস্ক্রিপ্ট এলিভেশন পরিষেবার মূল্য এবং ব্যবহারের নীতিগুলি সম্পর্কে জানতে, এলিভেশন API-এর ব্যবহার এবং বিলিং দেখুন৷
নীতিমালা
এলিভেশন পরিষেবার ব্যবহার অবশ্যই এলিভেশন API-এর জন্য বর্ণিত নীতি অনুসারে হতে হবে।
উচ্চতা অনুরোধ
এলিভেশন পরিষেবা অ্যাক্সেস করা অ্যাসিঙ্ক্রোনাস, যেহেতু Google Maps API-কে একটি বহিরাগত সার্ভারে কল করতে হবে। সেই কারণে, অনুরোধটি সম্পূর্ণ হওয়ার পরে কার্যকর করার জন্য আপনাকে একটি কলব্যাক পদ্ধতি পাস করতে হবে। এই কলব্যাক পদ্ধতির ফলাফল(গুলি) প্রক্রিয়া করা উচিত। মনে রাখবেন যে উচ্চতা পরিষেবা একটি স্ট্যাটাস কোড ( ElevationStatus ) এবং পৃথক ElevationResult বস্তুর একটি অ্যারে প্রদান করে।
ElevationService দুটি ধরনের অনুরোধ পরিচালনা করে:
-
getElevationForLocations()পদ্ধতি ব্যবহার করে পৃথক, পৃথক অবস্থানের জন্য অনুরোধ, যা একটিLocationElevationRequestঅবজেক্ট ব্যবহার করে এক বা একাধিক অবস্থানের তালিকা পাস করা হয়। -
getElevationAlongPath()পদ্ধতি ব্যবহার করে একটি পাথ বরাবর সংযুক্ত পয়েন্টগুলির একটি সিরিজে উচ্চতার জন্য অনুরোধ, যা একটিPathElevationRequestঅবজেক্টের মধ্যে পাথের শীর্ষবিন্দুগুলির একটি ক্রমযুক্ত সেট পাস করা হয়। পাথ বরাবর উচ্চতার অনুরোধ করার সময়, আপনাকে অবশ্যই একটি প্যারামিটার পাস করতে হবে যা নির্দেশ করে যে আপনি সেই পথ ধরে কতগুলি নমুনা নিতে চান।
প্রত্যাবর্তিত ElevationResult এবং ElevationStatus অবজেক্টগুলি পরিচালনা করতে এই পদ্ধতিগুলির প্রতিটিকে অবশ্যই একটি কলব্যাক পদ্ধতি পাস করতে হবে।
অবস্থান উচ্চতা অনুরোধ
একটি LocationElevationRequest বস্তুর আক্ষরিক মধ্যে নিম্নলিখিত ক্ষেত্র রয়েছে:
{ locations[]: LatLng }
locations (প্রয়োজনীয়) পৃথিবীতে অবস্থান(গুলি) সংজ্ঞায়িত করে যেখান থেকে উচ্চতার ডেটা ফেরত দিতে হবে। এই প্যারামিটারটি LatLng s এর একটি অ্যারে নেয়।
আপনি একটি অ্যারের মধ্যে যেকোন সংখ্যক একাধিক স্থানাঙ্ক পাস করতে পারেন, যতক্ষণ না আপনি পরিষেবা কোটা অতিক্রম না করেন। মনে রাখবেন যে একাধিক স্থানাঙ্ক পাস করার সময়, কোনো ফেরত ডেটার নির্ভুলতা একটি একক স্থানাঙ্কের জন্য ডেটা অনুরোধ করার সময় কম রেজোলিউশনের হতে পারে।
নমুনাযুক্ত পথ উচ্চতার অনুরোধ
একটি PathElevationRequest বস্তুর আক্ষরিক নিম্নলিখিত ক্ষেত্র রয়েছে:
{ path[]: LatLng, samples: Number }
এই ক্ষেত্রগুলি নীচে ব্যাখ্যা করা হয়েছে:
-
path(প্রয়োজনীয়) পৃথিবীতে একটি পথ সংজ্ঞায়িত করে যার জন্য উচ্চতার ডেটা ফেরত দিতে হবে।pathপ্যারামিটার দুই বা ততোধিকLatLngঅবজেক্টের অ্যারে ব্যবহার করে দুই বা ততোধিক অর্ডারকৃত {অক্ষাংশ, দ্রাঘিমাংশ} জোড়ার একটি সেট সংজ্ঞায়িত করে। -
samples(প্রয়োজনীয়) একটি পাথ বরাবর নমুনা পয়েন্টের সংখ্যা নির্দিষ্ট করে যার জন্য উচ্চতার ডেটা ফেরত দিতে হবে।samplesপরামিতি প্রদত্তpathপাথ বরাবর সমান দূরত্বের বিন্দুগুলির একটি অর্ডারকৃত সেটে ভাগ করে।
অবস্থানগত অনুরোধের মতো, path প্যারামিটার অক্ষাংশ এবং দ্রাঘিমাংশের মানগুলির একটি সেট নির্দিষ্ট করে। একটি অবস্থানগত অনুরোধের বিপরীতে, তবে, path শীর্ষবিন্দুগুলির একটি আদেশকৃত সেট নির্দিষ্ট করে। শীর্ষবিন্দুতে উচ্চতা ডেটা ফেরত দেওয়ার পরিবর্তে, পথের অনুরোধগুলি পাথের দৈর্ঘ্য বরাবর নমুনা করা হয়, যেখানে প্রতিটি নমুনা একে অপরের থেকে সমান দূরত্বে থাকে (শেষবিন্দুগুলি সহ)।
উচ্চতা প্রতিক্রিয়া
প্রতিটি বৈধ অনুরোধের জন্য, Elevation পরিষেবা একটি ElevationStatus অবজেক্ট সহ ElevationResult অবজেক্টের একটি সেট সংজ্ঞায়িত কলব্যাকে ফিরে আসবে।
উচ্চতার অবস্থা
প্রতিটি উচ্চতার অনুরোধ তার কলব্যাক ফাংশনের মধ্যে একটি ElevationStatus কোড প্রদান করে। এই status কোডে নিম্নলিখিত মানগুলির মধ্যে একটি থাকবে:
-
OKনির্দেশ করে যে পরিষেবার অনুরোধ সফল হয়েছে৷ -
INVALID_REQUESTনির্দেশ করে যে পরিষেবার অনুরোধটি ত্রুটিপূর্ণ ছিল৷ -
OVER_QUERY_LIMITনির্দেশ করে যে অনুরোধকারী কোটা অতিক্রম করেছে৷ -
REQUEST_DENIEDনির্দেশ করে যে পরিষেবাটি অনুরোধটি সম্পূর্ণ করেনি, সম্ভবত একটি অবৈধ প্যারামিটারের কারণে -
UNKNOWN_ERRORএকটি অজানা ত্রুটি নির্দেশ করে৷
OK এর জন্য এই স্ট্যাটাস কোড পরীক্ষা করে আপনার কলব্যাক সফল হয়েছে কিনা তা পরীক্ষা করা উচিত।
উচ্চতার ফলাফল
সাফল্যের পরে, আপনার কলব্যাক ফাংশনের results আর্গুমেন্টে ElevationResult অবজেক্টের একটি সেট থাকবে। এই বস্তুগুলিতে নিম্নলিখিত উপাদান রয়েছে:
- যে অবস্থানের জন্য উচ্চতার ডেটা গণনা করা হচ্ছে তার একটি
locationউপাদান (LatLngবস্তু রয়েছে)। লক্ষ্য করুন যে পাথ অনুরোধের জন্য,locationউপাদানের সেটে পাথ বরাবর নমুনাযুক্ত পয়েন্ট থাকবে। - একটি
elevationউপাদান মিটারে অবস্থানের উচ্চতা নির্দেশ করে। - একটি
resolutionমান, ডেটা পয়েন্টগুলির মধ্যে সর্বাধিক দূরত্ব নির্দেশ করে যেখান থেকে উচ্চতা মিটারে প্রসারিত হয়েছিল৷ রেজোলিউশন জানা না থাকলে এই সম্পত্তি অনুপস্থিত হবে। মনে রাখবেন যে উচ্চতা ডেটা আরও মোটা হয়ে যায় (বৃহত্তরresolutionমান) যখন একাধিক পয়েন্ট পাস করা হয়। একটি বিন্দুর জন্য সবচেয়ে সঠিক উচ্চতা মান পেতে, এটি স্বাধীনভাবে জিজ্ঞাসা করা উচিত।
উচ্চতার উদাহরণ
নিম্নলিখিত কোডটি LocationElevationRequest অবজেক্ট ব্যবহার করে একটি মানচিত্রের একটি ক্লিককে একটি উচ্চতার অনুরোধে অনুবাদ করে:
টাইপস্ক্রিপ্ট
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 63.333, lng: -150.5 }, // Denali. mapTypeId: "terrain", } ); const elevator = new google.maps.ElevationService(); const infowindow = new google.maps.InfoWindow({}); infowindow.open(map); // Add a listener for the click event. Display the elevation for the LatLng of // the click inside the infowindow. map.addListener("click", (event) => { displayLocationElevation(event.latLng, elevator, infowindow); }); } function displayLocationElevation( location: google.maps.LatLng, elevator: google.maps.ElevationService, infowindow: google.maps.InfoWindow ) { // Initiate the location request elevator .getElevationForLocations({ locations: [location], }) .then(({ results }) => { infowindow.setPosition(location); // Retrieve the first result if (results[0]) { // Open the infowindow indicating the elevation at the clicked position. infowindow.setContent( "The elevation at this point <br>is " + results[0].elevation + " meters." ); } else { infowindow.setContent("No results found"); } }) .catch((e) => infowindow.setContent("Elevation service failed due to: " + e) ); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
জাভাস্ক্রিপ্ট
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 63.333, lng: -150.5 }, // Denali. mapTypeId: "terrain", }); const elevator = new google.maps.ElevationService(); const infowindow = new google.maps.InfoWindow({}); infowindow.open(map); // Add a listener for the click event. Display the elevation for the LatLng of // the click inside the infowindow. map.addListener("click", (event) => { displayLocationElevation(event.latLng, elevator, infowindow); }); } function displayLocationElevation(location, elevator, infowindow) { // Initiate the location request elevator .getElevationForLocations({ locations: [location], }) .then(({ results }) => { infowindow.setPosition(location); // Retrieve the first result if (results[0]) { // Open the infowindow indicating the elevation at the clicked position. infowindow.setContent( "The elevation at this point <br>is " + results[0].elevation + " meters.", ); } else { infowindow.setContent("No results found"); } }) .catch((e) => infowindow.setContent("Elevation service failed due to: " + e), ); } window.initMap = initMap;
নমুনা চেষ্টা করুন
নিম্নলিখিত উদাহরণটি স্থানাঙ্কের একটি সেট দিয়ে একটি পলিলাইন তৈরি করে এবং Google ভিজ্যুয়ালাইজেশন API ব্যবহার করে সেই পথ বরাবর উচ্চতা ডেটা প্রদর্শন করে। (আপনাকে অবশ্যই Google কমন লোডার ব্যবহার করে এই API লোড করতে হবে।) PathElevationRequest ব্যবহার করে একটি উচ্চতার অনুরোধ তৈরি করা হয়:
টাইপস্ক্রিপ্ট
// Load the Visualization API and the columnchart package. // @ts-ignore TODO update to newest visualization library google.load("visualization", "1", { packages: ["columnchart"] }); function initMap(): void { // The following path marks a path from Mt. Whitney, the highest point in the // continental United States to Badwater, Death Valley, the lowest point. const path = [ { lat: 36.579, lng: -118.292 }, // Mt. Whitney { lat: 36.606, lng: -118.0638 }, // Lone Pine { lat: 36.433, lng: -117.951 }, // Owens Lake { lat: 36.588, lng: -116.943 }, // Beatty Junction { lat: 36.34, lng: -117.468 }, // Panama Mint Springs { lat: 36.24, lng: -116.832 }, ]; // Badwater, Death Valley const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: path[1], mapTypeId: "terrain", } ); // Create an ElevationService. const elevator = new google.maps.ElevationService(); // Draw the path, using the Visualization API and the Elevation service. displayPathElevation(path, elevator, map); } function displayPathElevation( path: google.maps.LatLngLiteral[], elevator: google.maps.ElevationService, map: google.maps.Map ) { // Display a polyline of the elevation path. new google.maps.Polyline({ path: path, strokeColor: "#0000CC", strokeOpacity: 0.4, map: map, }); // Create a PathElevationRequest object using this array. // Ask for 256 samples along that path. // Initiate the path request. elevator .getElevationAlongPath({ path: path, samples: 256, }) .then(plotElevation) .catch((e) => { const chartDiv = document.getElementById( "elevation_chart" ) as HTMLElement; // Show the error code inside the chartDiv. chartDiv.innerHTML = "Cannot show elevation: request failed because " + e; }); } // Takes an array of ElevationResult objects, draws the path on the map // and plots the elevation profile on a Visualization API ColumnChart. function plotElevation({ results }: google.maps.PathElevationResponse) { const chartDiv = document.getElementById("elevation_chart") as HTMLElement; // Create a new chart in the elevation_chart DIV. const chart = new google.visualization.ColumnChart(chartDiv); // Extract the data from which to populate the chart. // Because the samples are equidistant, the 'Sample' // column here does double duty as distance along the // X axis. const data = new google.visualization.DataTable(); data.addColumn("string", "Sample"); data.addColumn("number", "Elevation"); for (let i = 0; i < results.length; i++) { data.addRow(["", results[i].elevation]); } // Draw the chart using the data within its DIV. chart.draw(data, { height: 150, legend: "none", // @ts-ignore TODO update to newest visualization library titleY: "Elevation (m)", }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
জাভাস্ক্রিপ্ট
// Load the Visualization API and the columnchart package. // @ts-ignore TODO update to newest visualization library google.load("visualization", "1", { packages: ["columnchart"] }); function initMap() { // The following path marks a path from Mt. Whitney, the highest point in the // continental United States to Badwater, Death Valley, the lowest point. const path = [ { lat: 36.579, lng: -118.292 }, // Mt. Whitney { lat: 36.606, lng: -118.0638 }, // Lone Pine { lat: 36.433, lng: -117.951 }, // Owens Lake { lat: 36.588, lng: -116.943 }, // Beatty Junction { lat: 36.34, lng: -117.468 }, // Panama Mint Springs { lat: 36.24, lng: -116.832 }, ]; // Badwater, Death Valley const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: path[1], mapTypeId: "terrain", }); // Create an ElevationService. const elevator = new google.maps.ElevationService(); // Draw the path, using the Visualization API and the Elevation service. displayPathElevation(path, elevator, map); } function displayPathElevation(path, elevator, map) { // Display a polyline of the elevation path. new google.maps.Polyline({ path: path, strokeColor: "#0000CC", strokeOpacity: 0.4, map: map, }); // Create a PathElevationRequest object using this array. // Ask for 256 samples along that path. // Initiate the path request. elevator .getElevationAlongPath({ path: path, samples: 256, }) .then(plotElevation) .catch((e) => { const chartDiv = document.getElementById("elevation_chart"); // Show the error code inside the chartDiv. chartDiv.innerHTML = "Cannot show elevation: request failed because " + e; }); } // Takes an array of ElevationResult objects, draws the path on the map // and plots the elevation profile on a Visualization API ColumnChart. function plotElevation({ results }) { const chartDiv = document.getElementById("elevation_chart"); // Create a new chart in the elevation_chart DIV. const chart = new google.visualization.ColumnChart(chartDiv); // Extract the data from which to populate the chart. // Because the samples are equidistant, the 'Sample' // column here does double duty as distance along the // X axis. const data = new google.visualization.DataTable(); data.addColumn("string", "Sample"); data.addColumn("number", "Elevation"); for (let i = 0; i < results.length; i++) { data.addRow(["", results[i].elevation]); } // Draw the chart using the data within its DIV. chart.draw(data, { height: 150, legend: "none", // @ts-ignore TODO update to newest visualization library titleY: "Elevation (m)", }); } window.initMap = initMap;