KmlLayer , KML এবং GeoRSS উপাদানগুলোকে একটি Maps JavaScript API টাইল ওভারলে-তে রেন্ডার করে।
সংক্ষিপ্ত বিবরণ
ম্যাপস জাভাস্ক্রিপ্ট এপিআই ভৌগোলিক তথ্য প্রদর্শনের জন্য KML এবং GeoRSS ডেটা ফরম্যাট সমর্থন করে। এই ডেটা ফরম্যাটগুলো একটি KmlLayer অবজেক্ট ব্যবহার করে মানচিত্রে প্রদর্শন করা হয়, যার কনস্ট্রাক্টর সর্বজনীনভাবে প্রবেশযোগ্য কোনো KML বা GeoRSS ফাইলের URL গ্রহণ করে।
দ্রষ্টব্য: Maps JavaScript API-তে KML ওভারলে তৈরি করে এমন KmlLayer ক্লাসটি রেন্ডারিংয়ের জন্য KML ফাইল পুনরুদ্ধার ও পার্স করতে একটি গুগল হোস্টেড পরিষেবা ব্যবহার করে। ফলস্বরূপ, KML ফাইলগুলি কেবল তখনই প্রদর্শন করা সম্ভব, যদি সেগুলি এমন একটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য URL-এ হোস্ট করা থাকে যেখানে অ্যাক্সেস করার জন্য প্রমাণীকরণের প্রয়োজন হয় না।
আপনার যদি ব্যক্তিগত ফাইল অ্যাক্সেস করার প্রয়োজন হয়, ক্যাশের উপর সূক্ষ্ম নিয়ন্ত্রণ রাখতে চান, অথবা কোয়েরি প্যারামিটার হিসেবে ব্রাউজার ভিউপোর্টকে কোনো জিওস্পেশিয়াল ডেটা সার্ভারে পাঠাতে চান, তাহলে আমরা KmlLayer এর পরিবর্তে ডেটা লেয়ার ব্যবহার করার পরামর্শ দিই। এটি আপনার ব্যবহারকারীদের ব্রাউজারকে সরাসরি আপনার ওয়েব সার্ভার থেকে রিসোর্স অনুরোধ করতে নির্দেশ দেবে।
Maps JavaScript API প্রদত্ত ভৌগোলিক XML ডেটাকে একটি KML উপস্থাপনায় রূপান্তর করে, যা Maps JavaScript API টাইল ওভারলে ব্যবহার করে মানচিত্রে প্রদর্শিত হয়। এই KML দেখতে (এবং কিছুটা আচরণেও) পরিচিত Maps JavaScript API ওভারলে এলিমেন্টগুলোর মতো। KML <Placemark> এবং GeoRSS point এলিমেন্টগুলো মার্কার হিসেবে রেন্ডার করা হয়, উদাহরণস্বরূপ, <LineString> এলিমেন্টগুলো পলিলাইন হিসেবে এবং <Polygon> এলিমেন্টগুলো পলিগন হিসেবে রেন্ডার করা হয়। একইভাবে, <GroundOverlay> এলিমেন্টগুলো মানচিত্রে আয়তক্ষেত্রাকার ছবি হিসেবে রেন্ডার করা হয়। তবে, গুরুত্বপূর্ণ বিষয় হলো, এই অবজেক্টগুলো Maps JavaScript API Markers , Polylines , Polygons বা GroundOverlays নয় ; বরং, এগুলো মানচিত্রে একটি একক অবজেক্ট হিসেবে রেন্ডার করা হয়।
KmlLayer অবজেক্টগুলো একটি ম্যাপে তখনই দেখা যায় যখন তাদের map প্রপার্টি সেট করা হয়। setMap() ফাংশনে null পাস করে আপনি এগুলোকে ম্যাপ থেকে সরিয়ে ফেলতে পারেন। KmlLayer অবজেক্টটি ম্যাপের প্রদত্ত বাউন্ডের জন্য স্বয়ংক্রিয়ভাবে উপযুক্ত ফিচারগুলো পুনরুদ্ধার করার মাধ্যমে এই চাইল্ড এলিমেন্টগুলোর রেন্ডারিং পরিচালনা করে। বাউন্ড পরিবর্তিত হওয়ার সাথে সাথে, বর্তমান ভিউপোর্টের ফিচারগুলো স্বয়ংক্রিয়ভাবে রেন্ডার হয়ে যায়।
যেহেতু একটি KmlLayer ভেতরের উপাদানগুলো চাহিদা অনুযায়ী রেন্ডার করা হয়, তাই এই লেয়ারটি আপনাকে হাজার হাজার মার্কার, পলিলাইন এবং পলিগনের রেন্ডারিং সহজে পরিচালনা করার সুযোগ দেয়। উল্লেখ্য যে, আপনি এই উপাদান অবজেক্টগুলোকে সরাসরি অ্যাক্সেস করতে পারবেন না, যদিও এগুলোর প্রত্যেকটি ক্লিক ইভেন্ট সরবরাহ করে যা সেই স্বতন্ত্র অবজেক্টগুলোর ডেটা ফেরত দেয়।
KML লেয়ার বিকল্পগুলি
KmlLayer() কনস্ট্রাক্টরটি ঐচ্ছিকভাবে বেশ কিছু KmlLayerOptions পাস করে:
-
mapসেইMapনির্দিষ্ট করে যার উপরKmlLayerরেন্ডার করা হবে।setMap()মেথডের মধ্যে এই মানটিকে `nullসেট করে আপনি একটিKmlLayerলুকাতে পারেন। -
preserveViewportনির্দিষ্ট করে যে, লেয়ারটি দেখানোর সময় ম্যাপটি যেনKmlLayerএর বিষয়বস্তুর সীমানার মধ্যে সামঞ্জস্য না হয়। ডিফল্টরূপে, একটিKmlLayerপ্রদর্শন করার সময়, ম্যাপটি জুম করা হয় এবং লেয়ারটির সম্পূর্ণ বিষয়বস্তু দেখানোর জন্য অবস্থান নির্ধারণ করা হয়। -
suppressInfoWindowsনির্দেশ করে যেKmlLayerমধ্যে থাকা ক্লিকযোগ্য বৈশিষ্ট্যগুলিInfoWindowঅবজেক্ট প্রদর্শন শুরু করবে না।
এছাড়াও, KmlLayer রেন্ডার হয়ে গেলে, এটিতে একটি অপরিবর্তনীয় metadata প্রপার্টি থাকে, যা একটি KmlLayerMetadata অবজেক্ট লিটারেলের মধ্যে লেয়ারের নাম, বিবরণ, স্নিপেট এবং লেখকের তথ্য ধারণ করে। আপনি getMetadata() মেথড ব্যবহার করে এই তথ্য পরীক্ষা করতে পারেন। যেহেতু KmlLayer অবজেক্ট রেন্ডার করার জন্য একটি বাহ্যিক সার্ভারের সাথে অ্যাসিঙ্ক্রোনাস যোগাযোগের প্রয়োজন হয়, তাই আপনাকে metadata_changed ইভেন্টের জন্য লিসেন করতে হবে, যা নির্দেশ করবে যে প্রপার্টিটি ডেটা দ্বারা পূর্ণ হয়েছে।
নিম্নলিখিত উদাহরণটি প্রদত্ত GeoRSS ফিড থেকে একটি KmlLayer তৈরি করে:
টাইপস্ক্রিপ্ট
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: { lat: 49.496675, lng: -102.65625 }, } ); const georssLayer = new google.maps.KmlLayer({ url: "http://api.flickr.com/services/feeds/geo/?g=322338@N20&lang=en-us&format=feed-georss", }); georssLayer.setMap(map); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
জাভাস্ক্রিপ্ট
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: { lat: 49.496675, lng: -102.65625 }, }); const georssLayer = new google.maps.KmlLayer({ url: "http://api.flickr.com/services/feeds/geo/?g=322338@N20&lang=en-us&format=feed-georss", }); georssLayer.setMap(map); } window.initMap = initMap;
সিএসএস
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ #map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
এইচটিএমএল
<html>
<head>
<title>GeoRSS Layers</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
</head>
<body>
<div id="map"></div>
<!--
The `defer` attribute causes the script to execute after the full HTML
document has been parsed. For non-blocking uses, avoiding race conditions,
and consistent behavior across browsers, consider loading using Promises. See
https://developers.google.com/maps/documentation/javascript/load-maps-js-api
for more information.
-->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
defer
></script>
</body>
</html>নমুনা চেষ্টা করুন
নিম্নলিখিত উদাহরণটি প্রদত্ত KML ফিড থেকে একটি KmlLayer তৈরি করে:
টাইপস্ক্রিপ্ট
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 11, center: { lat: 41.876, lng: -87.624 }, } ); const ctaLayer = new google.maps.KmlLayer({ url: "https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml", map: map, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
জাভাস্ক্রিপ্ট
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 11, center: { lat: 41.876, lng: -87.624 }, }); const ctaLayer = new google.maps.KmlLayer({ url: "https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml", map: map, }); } window.initMap = initMap;
সিএসএস
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ #map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
এইচটিএমএল
<html>
<head>
<title>KML Layers</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
</head>
<body>
<div id="map"></div>
<!--
The `defer` attribute causes the script to execute after the full HTML
document has been parsed. For non-blocking uses, avoiding race conditions,
and consistent behavior across browsers, consider loading using Promises. See
https://developers.google.com/maps/documentation/javascript/load-maps-js-api
for more information.
-->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
defer
></script>
</body>
</html>নমুনা চেষ্টা করুন
KML বৈশিষ্ট্যের বিবরণ
যেহেতু KML-এ প্রচুর সংখ্যক ফিচার থাকতে পারে, তাই আপনি সরাসরি KmlLayer অবজেক্ট থেকে ফিচার ডেটা অ্যাক্সেস করতে পারবেন না। এর পরিবর্তে, ফিচারগুলো প্রদর্শিত হওয়ার সময়, সেগুলোকে ক্লিকযোগ্য Maps JavaScript API ওভারলে-এর মতো করে রেন্ডার করা হয়। ডিফল্টরূপে, কোনো নির্দিষ্ট ফিচারে ক্লিক করলে একটি InfoWindow খুলে যায়, যেখানে সেই নির্দিষ্ট ফিচারটির KML <title> এবং <description> তথ্য থাকে। এছাড়াও, একটি KML ফিচারে ক্লিক করলে একটি KmlMouseEvent তৈরি হয়, যা নিম্নলিখিত তথ্যগুলো প্রেরণ করে:
-
positionসেই অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক নির্দেশ করে যেখানে এই KML ফিচারের জন্যInfoWindowটিকে অ্যাঙ্কর করতে হবে। এই অবস্থানটি সাধারণত পলিগন, পলিলাইন এবং গ্রাউন্ডওভারলে-এর জন্য ক্লিক করা স্থান, কিন্তু মার্কারের জন্য প্রকৃত মূলবিন্দু। -
pixelOffsetInfoWindow“tail”-কে অ্যাঙ্কর করার জন্য উপরেরpositionথেকে অফসেট নির্দেশ করে। বহুভুজীয় অবজেক্টের জন্য এই অফসেট সাধারণত0,0হয়, কিন্তু মার্কারের ক্ষেত্রে এর সাথে মার্কারের উচ্চতাও অন্তর্ভুক্ত থাকে। -
featureDataKmlFeatureDataনামক একটি JSON কাঠামো থাকে।
নীচে একটি নমুনা KmlFeatureData অবজেক্ট দেখানো হলো:
{ author: { email: "nobody@google.com", name: "Mr Nobody", uri: "http://example.com" }, description: "description", id: "id", infoWindowHtml: "html", name: "name", snippet: "snippet" }
নিম্নলিখিত উদাহরণটি, ফিচারটিতে ক্লিক করা হলে, একটি সাইড <div> এর মধ্যে KML ফিচার <Description> এর টেক্সট প্রদর্শন করে:
টাইপস্ক্রিপ্ট
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 12, center: { lat: 37.06, lng: -95.68 }, } ); const kmlLayer = new google.maps.KmlLayer({ url: "https://raw.githubusercontent.com/googlearchive/kml-samples/gh-pages/kml/Placemark/placemark.kml", suppressInfoWindows: true, map: map, }); kmlLayer.addListener("click", (kmlEvent) => { const text = kmlEvent.featureData.description; showInContentWindow(text); }); function showInContentWindow(text: string) { const sidebar = document.getElementById("sidebar") as HTMLElement; sidebar.innerHTML = text; } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
জাভাস্ক্রিপ্ট
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 12, center: { lat: 37.06, lng: -95.68 }, }); const kmlLayer = new google.maps.KmlLayer({ url: "https://raw.githubusercontent.com/googlearchive/kml-samples/gh-pages/kml/Placemark/placemark.kml", suppressInfoWindows: true, map: map, }); kmlLayer.addListener("click", (kmlEvent) => { const text = kmlEvent.featureData.description; showInContentWindow(text); }); function showInContentWindow(text) { const sidebar = document.getElementById("sidebar"); sidebar.innerHTML = text; } } window.initMap = initMap;
সিএসএস
/* Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; } #container { height: 100%; display: flex; } #sidebar { flex-basis: 15rem; flex-grow: 1; padding: 1rem; max-width: 30rem; height: 100%; box-sizing: border-box; overflow: auto; } #map { flex-basis: 0; flex-grow: 4; height: 100%; }
এইচটিএমএল
<html>
<head>
<title>KML Feature Details</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
</head>
<body>
<div id="container">
<div id="map"></div>
<div id="sidebar"></div>
</div>
<!--
The `defer` attribute causes the script to execute after the full HTML
document has been parsed. For non-blocking uses, avoiding race conditions,
and consistent behavior across browsers, consider loading using Promises. See
https://developers.google.com/maps/documentation/javascript/load-maps-js-api
for more information.
-->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
defer
></script>
</body>
</html>নমুনা চেষ্টা করুন
KML রেন্ডারিংয়ের জন্য আকার এবং জটিলতার সীমাবদ্ধতা
Maps JavaScript API-এর ক্ষেত্রে লোড করা KML ফাইলের আকার এবং জটিলতার সীমাবদ্ধতা রয়েছে। নিচে বর্তমান সীমাবদ্ধতাগুলোর একটি সারসংক্ষেপ দেওয়া হলো।
দ্রষ্টব্য: এই সীমাগুলো যেকোনো সময় পরিবর্তন হতে পারে।
- সর্বোচ্চ প্রাপ্ত ফাইলের আকার (র KML, র GeoRSS, বা সংকুচিত KMZ)
- ৩এমবি
- অসংকুচিত KML ফাইলের সর্বোচ্চ আকার
- ১০ মেগাবাইট
- KMZ ফাইলে অসংকুচিত ছবির ফাইলের সর্বোচ্চ আকার
- প্রতি ফাইলে ৫০০কেবি
- সর্বাধিক সংখ্যক নেটওয়ার্ক লিঙ্ক
- ১০
- ডকুমেন্ট-ব্যাপী মোট বৈশিষ্ট্যের সর্বোচ্চ সংখ্যা
- ১,০০০
- KML স্তরের সংখ্যা
- একটি একক গুগল ম্যাপে প্রদর্শিত হতে পারে এমন KML লেয়ারের সংখ্যার একটি সীমা রয়েছে। আপনি যদি এই সীমা অতিক্রম করেন, তাহলে আপনার কোনো লেয়ারই ম্যাপে প্রদর্শিত হবে না এবং আপনার ওয়েব ব্রাউজারের জাভাস্ক্রিপ্ট কনসোলে একটি ত্রুটি দেখানো হবে। এই সীমাটি তৈরি করা
KmlLayerক্লাসের সংখ্যা এবং সেই লেয়ারগুলো তৈরি করতে ব্যবহৃত সমস্ত URL-এর মোট দৈর্ঘ্যের সমন্বয়ের উপর ভিত্তি করে নির্ধারিত হয়। আপনার তৈরি করা প্রতিটি নতুনKmlLayerলেয়ারটির জন্য নির্ধারিত সীমার একটি অংশ এবং যে URL থেকে KML ফাইলটি লোড করা হয়েছিল তার দৈর্ঘ্যের উপর নির্ভর করে সীমার আরও একটি অংশ দখল করবে। ফলস্বরূপ, আপনি কতগুলো লেয়ার যোগ করতে পারবেন তা অ্যাপ্লিকেশন ভেদে ভিন্ন হবে; গড়ে, আপনি সীমা অতিক্রম না করেই ১০ থেকে ২০টি লেয়ার লোড করতে পারবেন। এরপরও যদি আপনি সীমা অতিক্রম করেন, তাহলে KML URL-গুলো ছোট করার জন্য একটি URL শর্টনার ব্যবহার করুন। বিকল্পভাবে, প্রতিটি KML URL-এর জন্য NetworkLinks সম্বলিত একটি একক KML ফাইল তৈরি করুন।
কর্মক্ষমতা এবং ক্যাশিং বিবেচনা
আপনার সার্ভারের উপর চাপ কমাতে গুগলের সার্ভারগুলো সাময়িকভাবে KML ফাইল ক্যাশ করে রাখবে। এর ফলে, ব্যবহারকারীরা যখন ম্যাপে ক্লিক, প্যান এবং জুম করবেন, তখন আপনার KML ফাইলের উপযুক্ত অংশগুলোর একটি স্থান-সাশ্রয়ী উপস্থাপনা পরিবেশিত হবে, যা তাদের জন্য পারফরম্যান্সও উন্নত করবে।
সর্বোত্তম পারফরম্যান্সের জন্য আমরা আপনাকে নিম্নলিখিত বিষয়গুলো মেনে চলার পরামর্শ দিচ্ছি:
- KML-এ একটি উপযুক্ত
<expires>ট্যাগ ব্যবহার করুন।
KML ফাইলগুলি কীভাবে ক্যাশ করা হবে, সেই সিদ্ধান্ত নেওয়ার সময়KmlLayerHTTP হেডার ব্যবহার করবে না । - অনুরোধের সময় স্বয়ংক্রিয়ভাবে ফাইল তৈরি করবেন না।
এর পরিবর্তে, ফাইলগুলো প্রয়োজন হওয়ার আগেই তৈরি করুন এবং স্ট্যাটিক্যালি পরিবেশন করুন। আপনার সার্ভারের KML ফাইলটি প্রেরণ করতে যদি বেশি সময় লাগে, তাহলেKmlLayerপ্রদর্শিত নাও হতে পারে। - আপনার ফাইলটি আপডেট হয়েছে বলে নিশ্চিতভাবে না জানা পর্যন্ত ক্যাশে বাইপাস করার চেষ্টা করবেন না।
সবসময় ক্যাশে বাইপাস করলে (উদাহরণস্বরূপ, কোয়েরি প্যারামিটার হিসেবে একটি র্যান্ডম সংখ্যা বা ব্যবহারকারীর ঘড়ির সময় যুক্ত করে) আপনার সার্ভারগুলো সহজেই ওভারলোডেড হয়ে যেতে পারে, বিশেষ করে যদি আপনার সাইট হঠাৎ জনপ্রিয় হয়ে ওঠে এবং আপনি বড় আকারের KML ফাইল পরিবেশন করেন।
এর ফলে ক্যাশে ব্যবহারকারীদের কাছে পুরোনো ডেটাও পরিবেশন করতে পারে, যদি কোনো ব্যবহারকারীর ঘড়ি ভুল থাকে এবং<expires>ট্যাগটি সঠিকভাবে সেট করা না থাকে।
এর পরিবর্তে, একটি নতুন ও স্বতন্ত্র রিভিশন নম্বর দিয়ে আপডেট করা স্ট্যাটিক ফাইলগুলো প্রকাশ করুন এবং সার্ভার-সাইড কোড ব্যবহার করেKmlLayerএ পাঠানো URL-টিকে বর্তমান সংস্করণ দিয়ে গতিশীলভাবে আপডেট করুন। - আপনার KML ফাইলগুলিতে প্রতি মিনিটে একবার পরিবর্তন সীমাবদ্ধ করুন।
যদি সমস্ত ফাইলের মোট আকার (অসংকুচিত) ১ মেগাবাইটের বেশি হয়, তাহলে প্রতি ৫ মিনিটে একবার পরিবর্তন সীমাবদ্ধ করুন। - ভূ-স্থানিক ডেটা সার্ভার ব্যবহার করার সময়, লেয়ারের ভিউপোর্ট সীমিত করতে কোয়েরি প্যারামিটার ব্যবহার করা থেকে বিরত থাকুন।
এর পরিবর্তে, আপনিbounds_changedইভেন্ট ব্যবহার করে ম্যাপের ভিউপোর্ট সীমিত করতে পারেন। ব্যবহারকারীদের কাছে কেবল সেই ফিচারগুলোই পাঠানো হবে যা স্বয়ংক্রিয়ভাবে প্রদর্শিত হতে পারে।
আপনার ভূ-স্থানিক ডেটা সার্ভারে যদি বিপুল পরিমাণ ডেটা থাকে, তাহলে এর পরিবর্তে ডেটা লেয়ার ব্যবহার করার কথা বিবেচনা করতে পারেন। - জিওস্পেশিয়াল ডেটা সার্ভার ব্যবহার করার সময়, ব্যবহারকারীদের টগল করার অনুমতি দিতে চান এমন প্রতিটি ফিচার গ্রুপের জন্য ভিন্ন ভিন্ন কোয়েরি প্যারামিটারসহ একটিমাত্র
KmlLayerব্যবহার না করে, একাধিকKmlLayerব্যবহার করুন। - ফাইলের আকার কমাতে সংকুচিত KMZ ফাইল ব্যবহার করুন।
- আপনি যদি গুগল ক্লাউড স্টোরেজ বা অন্য কোনো ক্লাউড স্টোরেজ সলিউশন ব্যবহার করেন, তাহলে অ্যাক্সেস কন্ট্রোল কার্যকর করার জন্য সাইনড ইউআরএল (Signed URLs) বা টেম্পোরারি টোকেনের (temporary tokens) মতো ফিচার ব্যবহার করা থেকে বিরত থাকুন । এগুলো অনিচ্ছাকৃতভাবে ক্যাশিং-এ বাধা সৃষ্টি করতে পারে।
- সমস্ত পয়েন্টের নির্ভুলতা একটি উপযুক্ত নির্ভুলতায় হ্রাস করুন।
- বহুভুজ এবং বহুরেখার মতো একই ধরনের বৈশিষ্ট্যগুলির জ্যামিতি একত্রিত ও সরল করুন।
- যেকোনো অব্যবহৃত উপাদান বা চিত্র সম্পদ মুছে ফেলুন।
- যেকোনো অসমর্থিত উপাদান মুছে ফেলুন।
আপনার যদি ব্যক্তিগত ডেটা অ্যাক্সেস করার, ক্যাশিং প্রতিরোধ করার, অথবা কোয়েরি প্যারামিটার হিসেবে ব্রাউজার ভিউপোর্টকে কোনো জিওস্পেশিয়াল ডেটা সার্ভারে পাঠানোর প্রয়োজন হয়, তাহলে আমরা KmlLayer এর পরিবর্তে ডেটা লেয়ার ব্যবহার করার পরামর্শ দিই। এটি আপনার ব্যবহারকারীদের ব্রাউজারকে সরাসরি আপনার ওয়েব সার্ভার থেকে রিসোর্স অনুরোধ করতে নির্দেশ দেবে।
সমর্থিত KML উপাদানসমূহ
Maps জাভাস্ক্রিপ্ট এপিআই নিম্নলিখিত KML এলিমেন্টগুলো সমর্থন করে। KML পার্সার সাধারণত যেসব XML ট্যাগ বোঝে না, সেগুলোকে নীরবে উপেক্ষা করে।
- স্থানচিহ্ন
- আইকন
- ফোল্ডার
- বর্ণনামূলক HTML—<BalloonStyle> এবং <text> এর মাধ্যমে এনটিটি প্রতিস্থাপন
- KMZ (সংকুচিত KML, সংযুক্ত ছবি সহ)
- পলিলাইন এবং বহুভুজ
- পলিলাইন এবং পলিগনের স্টাইল, যার মধ্যে রয়েছে রঙ, ফিল এবং অপাসিটি।
- গতিশীলভাবে ডেটা আমদানি করার জন্য নেটওয়ার্ক লিঙ্ক
- গ্রাউন্ড ওভারলে এবং স্ক্রিন ওভারলে
নিম্নলিখিত সারণিতে সমর্থিত KML উপাদানগুলির পূর্ণাঙ্গ বিবরণ দেওয়া হয়েছে।
| KML উপাদান | এপিআই-তে সমর্থিত? | মন্তব্য |
|---|---|---|
| <ঠিকানা> | না | |
| <ঠিকানার বিবরণ> | না | |
| <উপনাম> | প্রযোজ্য নয় | <মডেল> সমর্থিত নয় |
| <উচ্চতা> | না | |
| <উচ্চতা মোড> | না | |
| <পরমাণু:লেখক> | হ্যাঁ | |
| <atom:link> | হ্যাঁ | |
| <পরমাণু:নাম> | হ্যাঁ | |
| বেলুন স্টাইল | আংশিকভাবে | শুধুমাত্র <text> সমর্থিত |
| <শুরু> | প্রযোজ্য নয় | <TimeSpan> সমর্থিত নয় |
| <bgColor> | না | |
| <bottomFov> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <ক্যামেরা> | না | |
| পরিবর্তন | আংশিকভাবে | শুধুমাত্র স্টাইল পরিবর্তন সমর্থিত। |
| <রঙ> | আংশিকভাবে | #AABBGGRR এবং #BBGGRR অন্তর্ভুক্ত; <IconStyle>, <ScreenOverlay>, এবং <GroundOverlay>-এ সমর্থিত নয়। |
| <রঙের মোড> | না | |
| <কুকি> | না | |
| স্থানাঙ্ক | হ্যাঁ | |
| <তৈরি করুন> | না | |
| <ডেটা> | হ্যাঁ | |
| <মুছে ফেলুন> | না | |
| <বিবরণ> | হ্যাঁ | এইচটিএমএল কন্টেন্ট অনুমোদিত, তবে ক্রস-ব্রাউজার আক্রমণ থেকে রক্ষা করার জন্য এটি পরিমার্জিত করা হয়। $[ dataName ] ফর্মের এনটিটি প্রতিস্থাপন সমর্থিত নয়। |
| <ডিসপ্লেমোড> | না | |
| <displayName> | না | |
| <নথি> | আংশিকভাবে | পরোক্ষভাবে, শিশুরা সমর্থিত হয়; অন্যান্য বৈশিষ্ট্যের সন্তান হিসেবে এর কোনো প্রভাব নেই। |
| <ড্রঅর্ডার> | না | |
| <পূর্ব> | হ্যাঁ | |
| শেষ | প্রযোজ্য নয় | <TimeSpan> সমর্থিত নয় |
| মেয়াদ শেষ হবে | হ্যাঁ | বিস্তারিত জানতে সারাংশ বিভাগটি দেখুন। |
| <বর্ধিত ডেটা> | আংশিকভাবে | শুধুমাত্র টাইপবিহীন <Data> সমর্থিত, <SimpleData> বা <Schema> সমর্থিত নয়, এবং $[ dataName ] আকারের এনটিটি প্রতিস্থাপন সমর্থিত নয়। |
| <এক্সট্রুড> | না | |
| <পূরণ করুন> | হ্যাঁ | |
| <ফ্লাইটুভিউ> | না | |
| <ফোল্ডার> | হ্যাঁ | |
| <geomColor> | না | অপ্রচলিত |
| <জ্যামিতি সংগ্রহ> | না | অপ্রচলিত |
| <geomScale> | না | অপ্রচলিত |
| <gridOrigin> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <গ্রাউন্ডওভারলে> | হ্যাঁ | ঘোরানো যাবে না |
| <h> | হ্যাঁ | অপ্রচলিত |
| <শিরোনাম> | হ্যাঁ | |
| ইঙ্গিত | হ্যাঁ | target=... সমর্থিত |
| <হটস্পট> | হ্যাঁ | |
| <href> | হ্যাঁ | |
| <httpQuery> | না | |
| <আইকন> | হ্যাঁ | ঘোরানো যাবে না |
| <আইকনস্টাইল> | হ্যাঁ | |
| <ইমেজ পিরামিড> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <innerBoundaryIs> | হ্যাঁ | <LinearRing> ক্রম থেকে পরোক্ষভাবে |
| <আইটেম আইকন> | প্রযোজ্য নয় | <ListStyle> সমর্থিত নয় |
| <key> | প্রযোজ্য নয় | <StyleMap> সমর্থিত নয় |
| <kml> | হ্যাঁ | |
| <লেবেলের রঙ> | না | অপ্রচলিত |
| <লেবেল শৈলী> | না | |
| <অক্ষাংশ> | হ্যাঁ | |
| <LatLonAltBox> | হ্যাঁ | |
| <LatLonBox> | হ্যাঁ | |
| <leftFov> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <লিনিয়াররিং> | হ্যাঁ | |
| <লাইনস্ট্রিং> | হ্যাঁ | |
| <লাইনস্টাইল> | হ্যাঁ | |
| <লিঙ্ক> | হ্যাঁ | |
| <লিঙ্কের বিবরণ> | না | |
| <লিঙ্কের নাম> | না | |
| <লিঙ্ক স্নিপেট> | না | |
| <তালিকার আইটেমের ধরণ> | প্রযোজ্য নয় | <ListStyle> সমর্থিত নয় |
| <তালিকা শৈলী> | না | |
| <অবস্থান> | প্রযোজ্য নয় | <মডেল> সমর্থিত নয় |
| <Lod> | হ্যাঁ | |
| <দ্রাঘিমাংশ> | হ্যাঁ | |
| <তাকান> | না | |
| <সর্বোচ্চ উচ্চতা> | হ্যাঁ | |
| <maxFadeExtent> | হ্যাঁ | |
| <সর্বোচ্চ উচ্চতা> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <maxLodPixels> | হ্যাঁ | |
| <সর্বোচ্চ সেশন দৈর্ঘ্য> | না | |
| <সর্বোচ্চ প্রস্থ> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <বার্তা> | না | |
| <মেটাডেটা> | না | অপ্রচলিত |
| সর্বনিম্ন উচ্চতা | হ্যাঁ | |
| <minFadeExtent> | হ্যাঁ | |
| <minLodPixels> | হ্যাঁ | |
| <minRefreshPeriod> | না | <নেটওয়ার্কলিঙ্ক> |
| <মডেল> | না | |
| <মাল্টিজিওমেট্রি> | আংশিকভাবে | রেন্ডার করা হলেও বাম পাশের প্যানেলে পৃথক বৈশিষ্ট্য হিসাবে প্রদর্শিত হয় |
| <নাম> | হ্যাঁ | |
| <কাছে> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <নেটওয়ার্কলিঙ্ক> | হ্যাঁ | |
| <নেটওয়ার্কলিঙ্ককন্ট্রোল> | আংশিকভাবে | <Update> এবং <expires> আংশিকভাবে সমর্থিত। এপিআই HTTP হেডারে থাকা মেয়াদোত্তীর্ণের সেটিংস উপেক্ষা করে, কিন্তু KML-এ নির্দিষ্ট করা মেয়াদোত্তীর্ণের সেটিংস ব্যবহার করে। মেয়াদোত্তীর্ণের সেটিংস না থাকলে, বা সময়সীমার মধ্যে, গুগল ম্যাপস ইন্টারনেট থেকে আনা ডেটা অনির্দিষ্ট সময়ের জন্য ক্যাশে করে রাখতে পারে। ডকুমেন্টটির নাম পরিবর্তন করে এবং ভিন্ন URL থেকে ডেটা আনার মাধ্যমে, অথবা ডকুমেন্টটিতে যথাযথ মেয়াদোত্তীর্ণের সেটিংস আছে কিনা তা নিশ্চিত করার মাধ্যমে ইন্টারনেট থেকে ডেটা পুনরায় আনতে বাধ্য করা যেতে পারে। |
| <উত্তর> | হ্যাঁ | |
| <খোলা> | হ্যাঁ | |
| <অভিমুখীকরণ> | প্রযোজ্য নয় | <মডেল> সমর্থিত নয় |
| <বহিঃসীমানা হলো> | হ্যাঁ | <LinearRing> ক্রম থেকে পরোক্ষভাবে |
| <রূপরেখা> | হ্যাঁ | |
| <ওভারলেXY> | না | |
| <জোড়া> | প্রযোজ্য নয় | <StyleMap> সমর্থিত নয় |
| <ফোন নম্বর> | না | |
| <ফটোওভারলে> | না | |
| <স্থানচিহ্ন> | হ্যাঁ | |
| <পয়েন্ট> | হ্যাঁ | |
| <বহুভুজ> | হ্যাঁ | |
| <পলিস্টাইল> | হ্যাঁ | |
| <পরিসর> | হ্যাঁ | |
| <রিফ্রেশ ইন্টারভাল> | আংশিকভাবে | শুধুমাত্র <লিঙ্ক>-এ; <আইকন>-এ নয়। |
| <রিফ্রেশমোড> | হ্যাঁ | 'onExpire' মোডের জন্য HTTP হেডার সমর্থিত নয়। উপরে <Update> এবং <expires> সম্পর্কিত নোটগুলো দেখুন। |
| <দৃশ্যমানতা রিফ্রেশ করুন> | না | |
| <অঞ্চল> | হ্যাঁ | |
| <রিসোর্স ম্যাপ> | প্রযোজ্য নয় | <মডেল> সমর্থিত নয় |
| <rightFov> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <roll> | প্রযোজ্য নয় | <ক্যামেরা> এবং <মডেল> সমর্থিত নয় |
| <ঘূর্ণন> | না | |
| <ঘূর্ণনXY> | না | |
| <স্কেল> | প্রযোজ্য নয় | <মডেল> সমর্থিত নয় |
| <স্কেল> | না | |
| <স্কিমা> | না | |
| <স্কিমা ডেটা> | না | |
| <স্ক্রিনওভারলে> | হ্যাঁ | ঘোরানো যাবে না |
| <স্ক্রিনXY> | না | |
| <আকৃতি> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <সাধারণ ডেটা> | প্রযোজ্য নয় | <স্কিমা ডেটা> সমর্থিত নয় |
| <সাধারণ ক্ষেত্র> | প্রযোজ্য নয় | <স্কিমা> সমর্থিত নয় |
| <আকার> | হ্যাঁ | |
| <সংক্ষিপ্ত অংশ> | হ্যাঁ | |
| <দক্ষিণ> | হ্যাঁ | |
| <রাজ্য> | প্রযোজ্য নয় | <ListStyle> সমর্থিত নয় |
| <শৈলী> | হ্যাঁ | |
| <স্টাইলম্যাপ> | না | রোলওভার (হাইলাইট) এফেক্ট সমর্থিত নয়। |
| <styleUrl> | প্রযোজ্য নয় | <StyleMap> সমর্থিত নয় |
| <টার্গেটএইচআরইএফ> | আংশিকভাবে | <Update>-এ সমর্থিত, <Alias>-এ নয়। |
| <টেসেলেট> | না | |
| <text> | হ্যাঁ | $[geDirections] এর প্রতিস্থাপন সমর্থিত নয় |
| <textColor> | না | |
| <টাইলসের আকার> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <হেলান> | না | |
| <সময়কাল> | না | |
| <টাইমস্ট্যাম্প> | না | |
| <topFov> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| <আপডেট> | আংশিকভাবে | শুধুমাত্র স্টাইল পরিবর্তন, <Create> বা <Delete> নয়। |
| <ইউআরএল> | হ্যাঁ | অপ্রচলিত |
| <মান> | হ্যাঁ | |
| <viewBoundScale> | না | |
| <viewFormat> | না | |
| <ভিউ রিফ্রেশ মোড> | আংশিকভাবে | "onStop" সমর্থিত |
| <viewRefreshTime> | হ্যাঁ | |
| <ViewVolume> | প্রযোজ্য নয় | <PhotoOverlay> সমর্থিত নয় |
| দৃশ্যমানতা | আংশিকভাবে | <Folder>-এর ক্ষেত্রে, চাইল্ড প্লেসমার্কগুলো তাদের ভিজিবিলিটি উত্তরাধিকার সূত্রে পায়। |
| <w> | হ্যাঁ | অপ্রচলিত |
| <পশ্চিম> | হ্যাঁ | |
| কখন | প্রযোজ্য নয় | <TimeStamp> সমর্থিত নয় |
| <প্রস্থ> | হ্যাঁ | |
| <x> | হ্যাঁ | অপ্রচলিত |
| <y> | হ্যাঁ | অপ্রচলিত |