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