Google Maps KML आयात करने की उपयोगिता

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript
  1. शुरुआती जानकारी
  2. KML लेयर जोड़ना
  3. KML लेयर मिटाएं
  4. KML कंटेनर ऐक्सेस करना
  5. KML प्लेसमार्क और KML ग्राउंड ओवरले ऐक्सेस करना
  6. KML प्रॉपर्टी ऐक्सेस करना
  7. KML के साथ काम करने वाली सुविधाएं

शुरुआती जानकारी

KML, एक्सएमएल डेटा फ़ॉर्मैट का एक एक्सटेंशन है और मैप पर भौगोलिक डेटा दिखाता है. इस सुविधा की मदद से, आप KML ऑब्जेक्ट को भौगोलिक आकार में बदल सकते हैं और उन्हें मैप के सबसे ऊपर एक लेयर के तौर पर दिखा सकते हैं. मैप में अपना KML डेटा जोड़ने और हटाने के लिए, addLayerToMap() और removeLayerFromMap() को कॉल करें. KML ऑब्जेक्ट में प्रॉपर्टी ऐक्सेस करने के लिए, किसी भी प्लेसमार्क, Ground ओवरले, दस्तावेज़ या फ़ोल्डर पर getProperties() को कॉल करें.

मैप में KML लेयर जोड़ें

मैप में डेटा लेयर जोड़ने के लिए, पहले KmlLayer क्लास का एक इंस्टेंस बनाएं. KmlLayer को इंस्टैंशिएट करने के दो तरीके हैं.

किसी स्थानीय संसाधन से KML डेटासेट इंपोर्ट और रेंडर करने के लिए, आपको ये शर्तें पूरी करनी होंगी:

  • एक GoogleMap ऑब्जेक्ट, जहां लेयर को रेंडर करना है.
  • KML डेटा वाली एक स्थानीय संसाधन फ़ाइल.
  • Context ऑब्जेक्ट, जो स्थानीय संसाधन फ़ाइल खोलने के लिए ज़रूरी है.

Java


KmlLayer layer = new KmlLayer(map, R.raw.geojson_file, context);

      

Kotlin


val layer = KmlLayer(map, R.raw.geojson_file, context)

      

किसी स्थानीय स्ट्रीम से KML डेटासेट इंपोर्ट और रेंडर करने के लिए, आपको ये शर्तें पूरी करनी होंगी:

  • एक GoogleMap ऑब्जेक्ट, जहां लेयर को रेंडर करना है.
  • एक InputStream जिसमें KML डेटा है.
  • एक Context ऑब्जेक्ट, जो स्थानीय संसाधनों को खोलने के लिए ज़रूरी है.

Java


InputStream inputStream = // InputStream containing KML data
KmlLayer layer = new KmlLayer(map, inputStream, context);

      

Kotlin


val inputStream: InputStream? =  // InputStream containing KML data
val layer = KmlLayer(map, inputStream, context)

      

KmlLayer बनाने के बाद, इंपोर्ट किए गए डेटा को मैप पर जोड़ने के लिए, addLayerToMap()() पर कॉल करें.

Java


layer.addLayerToMap();

      

Kotlin


layer.addLayerToMap()

      

KML लेयर हटाएं

मान लें कि आपने KmlLayer बनाया है:

Java


InputStream inputStream = // InputStream containing KML data
KmlLayer layer = new KmlLayer(map, inputStream, context);

      

Kotlin


val inputStream: InputStream? =  // InputStream containing KML data
val layer = KmlLayer(map, inputStream, context)

      

मैप से लेयर हटाने के लिए, removeLayerFromMap() को कॉल करें:

Java


layer.removeLayerFromMap();

      

Kotlin


layer.removeLayerFromMap()

      

KML कंटेनर ऐक्सेस करें

अपनी लेयर में जोड़े गए किसी भी कंटेनर को ऐक्सेस करने के लिए, आप अपने बनाए गए लेयर पर getContainers() को कॉल कर सकते हैं. यह देखने के लिए कि किसी कंटेनर में नेस्ट किए गए कंटेनर हैं या नहीं, hasContainers() पर कॉल करें. इन नेस्ट किए गए कंटेनर को ऐक्सेस करने के लिए, लेयर में दिए गए कंटेनर की तरह ही, getContainers() को कॉल किया जा सकता है

उन कंटेनर को ऐक्सेस करने के लिए जो नहीं KmlLayer या KmlContainer: में नेस्ट किए गए हैं

Java


for (KmlContainer containers : layer.getContainers()) {
    // Do something to container
}

      

Kotlin


for (containers in layer.containers) {
    // Do something to container
}

      

उन कंटेनर को ऐक्सेस करने के लिए जिन्हें KmlLayer या KmlContainer में नेस्ट किया गया है:

Java


public void accessContainers(Iterable<KmlContainer> containers) {
    for (KmlContainer container : containers) {
        if (container.hasContainers()) {
            accessContainers(container.getContainers());
        }
    }
}

      

Kotlin


fun accessContainers(containers: Iterable<KmlContainer>) {
    for (container in containers) {
        if (container.hasContainers()) {
            accessContainers(container.containers)
        }
    }

      

KML प्लेसमार्क और KML ग्राउंड ओवरले ऐक्सेस करें

लेयर में जोड़े गए किसी भी प्लेसमार्क या ग्राउंड ओवरले को ऐक्सेस करने के लिए, लेयर या कंटेनर पर getPlacemarks() या getGroundOverlays() को कॉल किया जा सकता है. दोनों में से किसी को भी कॉल करने पर, क्रम से KmlPlacemarks या KmlGroundOverlays फिर से इस्तेमाल किए जा सकेंगे.

उदाहरण के लिए, किसी लेयर से KmlPlacemark ऑब्जेक्ट ऐक्सेस करने के लिए:

Java


for (KmlPlacemark placemark : layer.getPlacemarks()) {
    // Do something to Placemark
}

      

Kotlin


for (placemark in layer.placemarks) {
    // Do something to Placemark
}

      

KML प्रॉपर्टी ऐक्सेस करना

कंटेनर या प्लेसमार्क में किसी भी प्रॉपर्टी को ऐक्सेस करने के लिए, getProperty() पर कॉल करें और उसे एक प्रॉपर्टी कुंजी दें. hasProperty() को कॉल करके, यह पता लगाया जा सकता है कि वह मौजूद है या नहीं. यह नमूना दिखाता है कि कंटेनर से प्रॉपर्टी की वैल्यू और कोट; नाम मौजूद होने पर उसे कैसे वापस लाया जाता है.

Java


for (KmlContainer container : layer.getContainers()) {
    if (container.hasProperty("name")) {
        Log.i("KML", container.getProperty("name"));
    }
}

      

Kotlin


for (container in layer.containers) {
    if (container.hasProperty("name")) {
        Log.i("KML", container.getProperty("name"))
    }
}

      

KML ज्यामिति क्लिक इवेंट

मैप पर ज्यामिति की सुविधाओं पर मिलने वाले क्लिक इवेंट सुनने के लिए, KmlLayer.OnFeatureClickListener() का इस्तेमाल किया जा सकता है. जब कोई उपयोगकर्ता, सुविधा पर क्लिक करता है, तो यह उदाहरण उस सुविधा का आईडी लॉग करता है:

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());
    }
});

      

Kotlin


// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener { feature ->
    Log.i(
        "KML",
        "Feature clicked: " + feature.id
    )
}

      

डेमो ऐप्लिकेशन देखें

KML फ़ाइल इंपोर्ट करने और उसके साथ कोई लेयर बनाने के उदाहरण के लिए, डेमो ऐप्लिकेशन में KmlDemoActivity देखें, जो यूटिलिटी लाइब्रेरी के साथ शिप किया जाता है. सेट अप गाइड से आपको डेमो ऐप्लिकेशन चलाने का तरीका पता चलेगा.

KML के साथ काम करने वाली सुविधाएं

KML एलिमेंट समर्थित? टिप्पणी करें
<पता> कुछ हद तक प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया
<AddressDetails> no
<उपनाम> no
<ऊंचाई> no
<heightMode> no
<atom:author> no
<atom:link> no
<atom:name> no
<गुब्बारा स्टाइल> कुछ हद तक केवल <text> समर्थित है
<begin> लागू नहीं <TimeSpan> समर्थित नहीं है
<bgColor> no
<बॉटमफ़ोव> लागू नहीं <PhotoOverlay> काम नहीं करता
<Camera> no
<बदलें> कुछ हद तक सिर्फ़ स्टाइल में किए गए बदलाव काम करते हैं
<color> कुछ हद तक इसमें #AABBGGRR और #BBGGRR शामिल हैं. यह < ScreenOverlay> और <GroundOverlay> में काम नहीं करता;
<colorMode> हाँ
<cookie> no <NetworkLinkControl> समर्थित नहीं
<निर्देशांक> हाँ
<बनाएं> no
<डेटा> no
<मिटाएं> no
<ब्यौरा> हाँ केवल सादा लेख, कोई HTML सामग्री समर्थित नहीं है
<displayMode> no
<displayName> no
<दस्तावेज़> हाँ
<drawOrder> हाँ
<पूर्व> हाँ
<end> लागू नहीं <TimeSpan> समर्थित नहीं है
<अवधि खत्म होती है; no <NetworkLinkControl> समर्थित नहीं
<enhancedData> कुछ हद तक टाइप नहीं किया गया <Data> सिर्फ़ &<SimpleData> या <Schema> और इकाई बदलने के लिए फ़ॉर्म$[dataName] का इस्तेमाल नहीं किया जा सकता.
<एक्स्राउटेड> no
<फ़िल> हाँ
<flyToView> no <NetworkLinkControl> समर्थित नहीं
<फ़ोल्डर> हाँ
<gridOrigin> लागू नहीं <PhotoOverlay> काम नहीं करता
<GroundOverlay> हाँ
<head> हाँ
<hotSpot> हाँ
<href> हाँ
<httpQuery> no
<आइकॉन> हाँ
<IconStyle> हाँ
<ImagePyramid> लागू नहीं <PhotoOverlay> काम नहीं करता
<innerBoundaryIs> हाँ निहित रूप से <LinearRing> ऑर्डर से
<ItemIcon> लागू नहीं <ListStyle> काम नहीं करता
<key> हाँ
<KML> हाँ
<LabelStyle> no
<अक्षांश> हाँ
<LatLonAltBox> no
<LatLonBox> हाँ
<leftFov> लागू नहीं <PhotoOverlay> काम नहीं करता
<LinearRing> हाँ
<LineString> हाँ
<LineStyle> हाँ
<लिंक> no
<linkDescription> लागू नहीं <NetworkLinkControl> समर्थित नहीं
<linkName> लागू नहीं <NetworkLinkControl> समर्थित नहीं
<linksnippet> लागू नहीं <NetworkLinkControl> समर्थित नहीं
<listItemType> लागू नहीं <ListStyle> काम नहीं करता
<ListStyle> no
<स्थान> लागू नहीं <Model> काम नहीं करता
<लॉड> हाँ
<देशांतर> हाँ
<LookAt> no
<maxAltit अच्छे> no
<maxFadeExtent> no
<maxHeight> लागू नहीं <PhotoOverlay> काम नहीं करता
<maxLodPixels> no
<maxSessionLength> no
<maxWidth> लागू नहीं <PhotoOverlay> काम नहीं करता
<message> no
<minAltit अच्छे> no
<minFadeextent> no
<minLodPixels> no
<minरीफ़्रेशPeriod> no <NetworkLink>
<मॉडल> no
<मल्टीजियोमेट्री> हाँ
<नाम> हाँ
<मेरे पास> लागू नहीं <PhotoOverlay> काम नहीं करता
<NetworkLink> no
<NetworkLinkControl> no
<नॉर्थ> हाँ
<open> हाँ प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया
<ओरिएंटेशन> लागू नहीं <Model> काम नहीं करता
<outerBoundaryIs> हाँ निहित रूप से <LinearRing> ऑर्डर से
<outline> हाँ
< ओवरलेXY> no
<दूसरे डिवाइस से जोड़ें; हाँ
<phoneNumber> कुछ हद तक प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया
<फ़ोटोओवरले> no
<प्लेसमार्क> हाँ
<Point> हाँ
<पॉलीगॉन> हाँ
<PolyStyle> हाँ
<range> हाँ
<रीफ़्रेश करेंइंटरवल> no
<रीफ़्रेश मोड> no
&lt,रीफ़्रेश करें> no
<क्षेत्र> हाँ
<ResourceMap> लागू नहीं <Model> काम नहीं करता
<rightFov> लागू नहीं <PhotoOverlay> काम नहीं करता
<रोल> लागू नहीं <Camera> &<Model> काम नहीं करता
<रोटेशन> हाँ
<रोटेटेशनXY> no
<स्केल> लागू नहीं <Model> काम नहीं करता
<स्केल> हाँ
<स्कीमा> no
<SchemaData> no
<स्क्रीन ओवरले> no
<screenXY> लागू नहीं <screenOverlay> काम नहीं करता
<आकार> लागू नहीं <PhotoOverlay> काम नहीं करता
<SimpleData> लागू नहीं <SchemaData> काम नहीं करता
<SimpleField> लागू नहीं <स्कीमा> काम नहीं करता
lt&size;gt; हाँ
<स्निपेट> no
<south> हाँ
<state> लागू नहीं <ListStyle> काम नहीं करता
<स्टाइल> हाँ
<StyleMap> कुछ हद तक हाइलाइट किया गया स्टाइल नहीं दिया गया. इनलाइन StyleMaps काम नहीं करते
<styleUrl> हाँ
<targetHref> no <Alias> काम नहीं करता
<tessellate> no
<text> हाँ
<textColor> no
<tileSize> लागू नहीं <PhotoOverlay> काम नहीं करता
<टिल्ट> no
<TimeSpan> no
<टाइमस्टैंप> no
<topFov> लागू नहीं <PhotoOverlay> काम नहीं करता
<अपडेट करें> लागू नहीं <NetworkLinkControl<समर्थित नहीं
<value> हाँ
<viewBoundScale> no
<viewformat> no
<viewरीफ़्रेशMode> no
<viewरीफ़्रेशटाइम> no
<ViewVolume> लागू नहीं <PhotoOverlay> काम नहीं करता
<किसको दिखे> हाँ
<वेस्ट> हाँ
<कब> लागू नहीं <TimeStamp> काम नहीं करता
<चौड़ाई> हाँ