- शुरुआती जानकारी
- केएमएल लेयर जोड़ना
- केएमएल लेयर मिटाना
- केएमएल कंटेनर ऐक्सेस करना
- केएमएल प्लेसमार्क और KML ग्राउंड ओवरले ऐक्सेस करना
- केएमएल प्रॉपर्टी ऐक्सेस करना
- KML के साथ काम करने वाली सुविधाएं
शुरुआती जानकारी
KML,
XML
डेटा फ़ॉर्मैट का एक्सटेंशन है और मैप पर इलाके के हिसाब से डेटा दिखाता है. इस सुविधा का इस्तेमाल करके, आप KML ऑब्जेक्ट को भौगोलिक आकृतियों में बदल सकते हैं और उन्हें मैप के ऊपर एक लेयर के तौर पर रेंडर कर सकते हैं. मैप में अपना KML डेटा जोड़ने और उससे हटाने के लिए, क्रम से addLayerToMap()
और removeLayerFromMap()
को कॉल करें. KML ऑब्जेक्ट में प्रॉपर्टी ऐक्सेस करने के लिए, किसी भी प्लेसमार्क, ग्राउंडओवरले, दस्तावेज़ या फ़ोल्डर पर
getProperties()
को कॉल करें.
मैप में KML लेयर जोड़ें
मैप में डेटा लेयर जोड़ने के लिए, पहले KmlLayer
क्लास का एक इंस्टेंस बनाएं. KmlLayer
को इंस्टैंशिएट करने के दो तरीके हैं.
किसी स्थानीय संसाधन से KML डेटासेट इंपोर्ट करने और रेंडर करने के लिए, आपको इनकी ज़रूरत होगी:
GoogleMap
ऑब्जेक्ट, जहां लेयर को रेंडर करना है.- KML डेटा वाली एक लोकल रिसॉर्स फ़ाइल.
- एक
Context
ऑब्जेक्ट, जिसकी ज़रूरत किसी लोकल रिसॉर्स फ़ाइल को खोलने के लिए होती है.
Kotlin
val layer = KmlLayer(map, R.raw.geojson_file, context)
Java
KmlLayer layer = new KmlLayer(map, R.raw.geojson_file, context);
किसी स्थानीय स्ट्रीम से KML डेटासेट इंपोर्ट करने और रेंडर करने के लिए, आपको इनकी ज़रूरत होगी:
GoogleMap
ऑब्जेक्ट, जहां लेयर को रेंडर करना है.- एक
InputStream
जिसमें KML डेटा होता है. Context
ऑब्जेक्ट, जो लोकल संसाधनों को खोलने के लिए ज़रूरी है.
Kotlin
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
Java
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
KmlLayer
बनाने के बाद, इंपोर्ट किए गए डेटा को मैप पर जोड़ने के लिए,
addLayerToMap()()
को कॉल करें.
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
KML लेयर मिटाना
मान लें कि आपने यह KmlLayer
बनाया है:
Kotlin
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
Java
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
मैप से लेयर हटाने के लिए, removeLayerFromMap()
को कॉल करें:
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
KML कंटेनर ऐक्सेस करना
अपनी लेयर में जोड़े गए किसी भी कंटेनर को ऐक्सेस करने के लिए,
बनाई गई लेयर पर getContainers()
को कॉल किया जा सकता है.
यह देखने के लिए कि किसी कंटेनर में नेस्ट किए गए कंटेनर हैं या नहीं, hasContainers()
को कॉल किया जा सकता है. लेयर में किए गए काम की तरह ही, नेस्ट किए गए इन कंटेनर को ऐक्सेस करने के लिए, getContainers()
को कॉल किया जा सकता है
उन कंटेनर को ऐक्सेस करने के लिए जिन्हें KmlLayer
या KmlContainer:
में नेस्ट नहीं किया गया है
Kotlin
for (containers in layer.containers) { // Do something to container }
Java
for (KmlContainer containers : layer.getContainers()) { // Do something to container }
उन कंटेनर को ऐक्सेस करने के लिए जो KmlLayer
या KmlContainer
में नेस्ट हैं:
Kotlin
fun accessContainers(containers: Iterable<KmlContainer>) { for (container in containers) { if (container.hasContainers()) { accessContainers(container.containers) } }
Java
public void accessContainers(Iterable<KmlContainer> containers) { for (KmlContainer container : containers) { if (container.hasContainers()) { accessContainers(container.getContainers()); } } }
KML प्लेसमार्क और KML ग्राउंड ओवरले ऐक्सेस करें
लेयर में जोड़े गए किसी प्लेसमार्क या ग्राउंड ओवरले को ऐक्सेस करने के लिए, लेयर या कंटेनर पर getPlacemarks()
या getGroundOverlays()
को कॉल किया जा सकता है. इनमें से किसी भी एक को कॉल करने पर,
KmlPlacemarks
या
KmlGroundOverlays
का फिर से इस्तेमाल किया जा सकेगा.
उदाहरण के लिए, किसी लेयर से KmlPlacemark
ऑब्जेक्ट को ऐक्सेस करने के लिए:
Kotlin
for (placemark in layer.placemarks) { // Do something to Placemark }
Java
for (KmlPlacemark placemark : layer.getPlacemarks()) { // Do something to Placemark }
KML प्रॉपर्टी ऐक्सेस करना
कंटेनर या प्लेसमार्क में किसी प्रॉपर्टी को ऐक्सेस करने के लिए, getProperty()
को कॉल करें और उसे प्रॉपर्टी की कुंजी दें. यह देखने के लिए कि
hasProperty()
पर कॉल किया जा सकता है या नहीं, आप भी कॉल कर सकते हैं. इस सैंपल में, किसी कंटेनर से "name" प्रॉपर्टी की वैल्यू को वापस पाने का तरीका बताया गया है.
Kotlin
for (container in layer.containers) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")) } }
Java
for (KmlContainer container : layer.getContainers()) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")); } }
KML ज्यामिति क्लिक इवेंट
मैप पर ज्यामिति सुविधाओं में क्लिक इवेंट सुनने के लिए, KmlLayer.OnFeatureClickListener()
का इस्तेमाल किया जा सकता है. नीचे दिया गया उदाहरण, किसी सुविधा पर क्लिक करने के बाद, सुविधा का आईडी लॉग करता है:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i( "KML", "Feature clicked: " + feature.id ) }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new KmlLayer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("KML", "Feature clicked: " + feature.getId()); } });
डेमो ऐप्लिकेशन देखें
KML फ़ाइल इंपोर्ट करने और इसके साथ लेयर बनाने का उदाहरण देखने के लिए, डेमो ऐप्लिकेशन में KmlDemoActivity
पर एक नज़र डालें. यह ऐप्लिकेशन, यूटिलिटी लाइब्रेरी के साथ भेजा जाता है. सेटअप गाइड में डेमो ऐप्लिकेशन चलाने का तरीका बताया गया है.
KML फ़ॉर्मैट में काम करने वाली सुविधाएं
KML एलिमेंट | समर्थित? | Comment |
---|---|---|
<address> | कुछ हद तक | प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया हो |
<AddressDetails> | no | |
<Alias> | no | |
<altitude> | no | |
<altitudeMode> | no | |
<atom:author> | no | |
<atom:link> | no | |
<atom:name> | no | |
<BalloonStyle> | कुछ हद तक | सिर्फ़ <text> इस्तेमाल किया जा सकता है |
<begin> | लागू नहीं | <TimeSpan> काम नहीं करता |
<bgColor> | no | |
<bottomFov> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<Camera> | no | |
<बदलें> | कुछ हद तक | सिर्फ़ स्टाइल में बदलाव किए जा सकते हैं |
<color> | कुछ हद तक | इसमें #AABBGGRR और #BBGGRR शामिल हैं; <ScreenOverlay> और <GroundOverlay> में काम नहीं करता |
<colorMode> | हाँ | |
<cookie> | no | <NetworkLinkControl> काम नहीं करते |
<coordinates> | हाँ | |
<बनाएं> | no | |
<Data> | no | |
<मिटाएं> | no | |
<description> | हाँ | सिर्फ़ सादा टेक्स्ट इस्तेमाल किया जा सकता है, कोई एचटीएमएल कॉन्टेंट इस्तेमाल नहीं किया जा सकता |
<displayMode> | no | |
<displayName> | no | |
<Document> | हाँ | |
<drawOrder> | हाँ | |
<east> | हाँ | |
<end> | लागू नहीं | <TimeSpan> काम नहीं करता |
<expires> | no | <NetworkLinkControl> काम नहीं करते |
<ExtendedData> | कुछ हद तक | सिर्फ़ बिना टाइप वाला <Data>, < SimpleData> या <Schema> का इस्तेमाल नहीं किया गया है, और फ़ॉर्म$[dataName] के लिए इकाई को बदला गया है, तो यह सुविधा काम नहीं करती. |
<extrude> | no | |
<fill> | हाँ | |
<flyToView> | no | <NetworkLinkControl> काम नहीं करते |
<फ़ोल्डर> | हाँ | |
<gridOrigin> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<GroundOverlay> | हाँ | |
<heading> | हाँ | |
<hotSpot> | हाँ | |
<href> | हाँ | |
<httpQuery> | no | |
<Icon> | हाँ | |
<IconStyle> | हाँ | |
<ImagePyramid> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<innerBoundaryIs> | हाँ | सीधे तौर पर <लीनियर Ring> ऑर्डर से लिया गया |
<ItemIcon> | लागू नहीं | <ListStyle> काम नहीं करती |
<key> | हाँ | |
<kml> | हाँ | |
<LabelStyle> | no | |
<latitude> | हाँ | |
<LatLonAltBox> | no | |
<LatLonBox> | हाँ | |
<leftFov> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<LinearRing> | हाँ | |
<LineString> | हाँ | |
<LineStyle> | हाँ | |
<Link> | no | |
<linkDescription> | लागू नहीं | <NetworkLinkControl> काम नहीं करते |
<linkName> | लागू नहीं | <NetworkLinkControl> काम नहीं करते |
<linkSnippet> | लागू नहीं | <NetworkLinkControl> काम नहीं करते |
<listItemType> | लागू नहीं | <ListStyle> काम नहीं करती |
<ListStyle> | no | |
<जगह की जानकारी> | लागू नहीं | <Model> काम नहीं करता |
<Lod> | हाँ | |
<longitude> | हाँ | |
<LookAt> | no | |
<maxAltitude> | no | |
<maxFadeExtent> | no | |
<maxHeight> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<maxLodPixels> | no | |
<maxSessionLength> | no | |
<maxWidth> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<message> | no | |
<minAltitude> | no | |
<minFadeExtent> | no | |
<minLodPixels> | no | |
<minRefreshPeriod> | no | <NetworkLink> |
<मॉडल> | no | |
<MultiGeometry> | हाँ | |
<name> | हाँ | |
<आस-पास> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<NetworkLink> | no | |
<NetworkLinkControl> | no | |
<north> | हाँ | |
<open> | हाँ | प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया हो |
<Orientation> | लागू नहीं | <Model> काम नहीं करता |
<outerBoundaryIs> | हाँ | सीधे तौर पर <लीनियर Ring> ऑर्डर से लिया गया |
<outline> | हाँ | |
<overlayXY> | no | |
<Pair> | हाँ | |
<phoneNumber> | कुछ हद तक | प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया हो |
<PhotoOverlay> | no | |
<Placemark> | हाँ | |
<Point> | हाँ | |
<Polygon> | हाँ | |
<PolyStyle> | हाँ | |
<range> | हाँ | |
<refreshInterval> | no | |
<refreshMode> | no | |
<refreshVisibility> | no | |
<Region> | हाँ | |
<ResourceMap> | लागू नहीं | <Model> काम नहीं करता |
<rightFov> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<रोल> | लागू नहीं | <Camera> और <Model> काम नहीं करते |
<rotation> | हाँ | |
<rotationXY> | no | |
<स्केल> | लागू नहीं | <Model> काम नहीं करता |
<scale> | हाँ | |
<Schema> | no | |
<SchemaData> | no | |
<ScreenOverlay> | no | |
<screenXY> | लागू नहीं | <ScreenOverlay> काम नहीं करता |
<shape> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<SimpleData> | लागू नहीं | <SchemaData> काम नहीं करता |
<SimpleField> | लागू नहीं | <schema> काम नहीं करता |
<size> | हाँ | |
<Snippet> | no | |
<south> | हाँ | |
<state> | लागू नहीं | <ListStyle> काम नहीं करती |
<Style> | हाँ | |
<StyleMap> | कुछ हद तक | हाइलाइट की गई स्टाइल नहीं दी गई है. इनलाइन StyleMaps काम नहीं करता |
<styleUrl> | हाँ | |
<targetHref> | no | <Alias> इस्तेमाल नहीं किया जा सकता |
<tessellate> | no | |
<text> | हाँ | |
<textColor> | no | |
<tileSize> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<tilt> | no | |
<TimeSpan> | no | |
<TimeStamp> | no | |
<topFov> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<अपडेट करें> | लागू नहीं | <NetworkLinkControl< काम नहीं करता |
<value> | हाँ | |
<viewBoundScale> | no | |
<viewFormat> | no | |
<viewRefreshMode> | no | |
<viewRefreshTime> | no | |
<ViewVolume> | लागू नहीं | <PhotoOverlay> काम नहीं करता |
<visibility> | हाँ | |
<west> | हाँ | |
<when> | लागू नहीं | <TimeStamp> मौजूद नहीं है |
<width> | हाँ |