Google Maps के KML इंपोर्टिंग यूटिलिटी

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

परिचय

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

मैप में KML परत जोड़ें

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

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

  • एक GoogleMap ऑब्जेक्ट, जहां लेयर को रेंडर करना है.
  • KML डेटा वाली एक लोकल संसाधन फ़ाइल.
  • Context ऑब्जेक्ट, जो किसी लोकल रिसॉर्स को खोलने के लिए ज़रूरी है फ़ाइल से लिए जाते हैं.
KotlinJava
val layer = KmlLayer(map, R.raw.geojson_file, context)

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

      

लोकल स्ट्रीम से KML डेटासेट इंपोर्ट और रेंडर करने के लिए आपको इन चीज़ों की ज़रूरत होगी:

  • एक GoogleMap ऑब्जेक्ट, जहां लेयर को रेंडर करना है.
  • KML डेटा वाला InputStream.
  • Context ऑब्जेक्ट, जो लोकल रिसॉर्स खोलने के लिए ज़रूरी है.
KotlinJava
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()().

KotlinJava
layer.addLayerToMap()

      
layer.addLayerToMap();

      

KML परत साफ़ करें

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

KotlinJava
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() को कॉल करें:

KotlinJava
layer.removeLayerFromMap()

      
layer.removeLayerFromMap();

      

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

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

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

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

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

      

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

KotlinJava
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 ऑब्जेक्ट को ऐक्सेस करने के लिए:

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

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

      

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

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

KotlinJava
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() का इस्तेमाल करके, मैप पर ज्यामिति सुविधाएं हैं. यहां दिए गए उदाहरण में, किसी सुविधा के आईडी को तब लॉग किया जाता है, जब उपयोगकर्ता सुविधा पर क्लिक करता है:

KotlinJava
// 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 एलिमेंट समर्थित? टिप्पणी
&lt;address&gt; कुछ हद तक प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया
&lt;AddressDetails&gt; नहीं
&lt;Alias&gt; नहीं
&lt;altitude&gt; नहीं
&lt;altitudeMode&gt; नहीं
&lt;atom:author&gt; नहीं
&lt;atom:link&gt; नहीं
&lt;atom:name&gt; नहीं
&lt;BalloonStyle&gt; कुछ हद तक सिर्फ़ <text> समर्थित है
&lt;begin&gt; लागू नहीं &lt;TimeSpan&gt; समर्थित नहीं है
&lt;bgColor&gt; नहीं
&lt;bottomFov&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;Camera&gt; नहीं
&lt;Change&gt; कुछ हद तक सिर्फ़ स्टाइल में बदलाव किए जा सकते हैं
&lt;color&gt; कुछ हद तक इसमें #AABBGGRR और #BBGGRR शामिल है; <ScreenOverlay> और <GroundOverlay> में काम नहीं करता
&lt;colorMode&gt; हां
&lt;cookie&gt; नहीं &lt;NetworkLinkControl&gt; मौजूद नहीं है
&lt;coordinates&gt; हां
&lt;Create&gt; नहीं
&lt;Data&gt; नहीं
&lt;Delete&gt; नहीं
&lt;description&gt; हां सिर्फ़ सादा लेख, कोई एचटीएमएल कॉन्टेंट काम नहीं करता
&lt;displayMode&gt; नहीं
&lt;displayName&gt; नहीं
&lt;Document&gt; हां
&lt;drawOrder&gt; हां
&lt;east&gt; हां
&lt;end&gt; लागू नहीं &lt;TimeSpan&gt; समर्थित नहीं है
&lt;expires&gt; नहीं &lt;NetworkLinkControl&gt; मौजूद नहीं है
&lt;ExtendedData&gt; कुछ हद तक टाइप नहीं किया गया <Data> सिर्फ़, नहीं <SimpleData> या <schema> और form$[dataName] की इकाई की जगह, इस्तेमाल नहीं किया जा सकता.
&lt;extrude&gt; नहीं
&lt;fill&gt; हां
&lt;flyToView&gt; नहीं &lt;NetworkLinkControl&gt; मौजूद नहीं है
&lt;Folder&gt; हां
&lt;gridOrigin&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;GroundOverlay&gt; हां
&lt;heading&gt; हां
&lt;hotSpot&gt; हां
&lt;href&gt; हां
&lt;httpQuery&gt; नहीं
&lt;Icon&gt; हां
&lt;IconStyle&gt; हां
&lt;ImagePyramid&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;innerBoundaryIs&gt; हां साफ़ तौर पर <लीनियरRing> से ऑर्डर
&lt;ItemIcon&gt; लागू नहीं &lt;ListStyle&gt; समर्थित नहीं है
&lt;key&gt; हां
&lt;kml&gt; हां
&lt;LabelStyle&gt; नहीं
<अक्षांश> हां
&lt;LatLonAltBox&gt; नहीं
&lt;LatLonBox&gt; हां
&lt;leftFov&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;LinearRing&gt; हां
&lt;LineString&gt; हां
&lt;LineStyle&gt; हां
<लिंक> नहीं
&lt;linkDescription&gt; लागू नहीं &lt;NetworkLinkControl&gt; मौजूद नहीं है
&lt;linkName&gt; लागू नहीं &lt;NetworkLinkControl&gt; मौजूद नहीं है
&lt;linkSnippet&gt; लागू नहीं &lt;NetworkLinkControl&gt; मौजूद नहीं है
&lt;listItemType&gt; लागू नहीं &lt;ListStyle&gt; समर्थित नहीं है
&lt;ListStyle&gt; नहीं
&lt;Location&gt; लागू नहीं &lt;Model&gt; समर्थित नहीं है
&lt;Lod&gt; हां
<देशांतर> हां
&lt;LookAt&gt; नहीं
&lt;maxAltitude&gt; नहीं
&lt;maxFadeExtent&gt; नहीं
&lt;maxHeight&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;maxLodPixels&gt; नहीं
&lt;maxSessionLength&gt; नहीं
&lt;maxWidth&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
<message> नहीं
&lt;minAltitude&gt; नहीं
&lt;minFadeExtent&gt; नहीं
&lt;minLodPixels&gt; नहीं
&lt;minRefreshPeriod&gt; नहीं &lt;NetworkLink&gt;
&lt;Model&gt; नहीं
&lt;MultiGeometry&gt; हां
&lt;name&gt; हां
&lt;near&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;NetworkLink&gt; नहीं
&lt;NetworkLinkControl&gt; नहीं
&lt;north&gt; हां
&lt;open&gt; हां प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया
<ओरिएंटेशन> लागू नहीं &lt;Model&gt; समर्थित नहीं है
&lt;outerBoundaryIs&gt; हां साफ़ तौर पर <लीनियरRing> से ऑर्डर
&lt;outline&gt; हां
&lt;overlayXY&gt; नहीं
&lt;Pair&gt; हां
&lt;phoneNumber&gt; कुछ हद तक प्रॉपर्टी की वैल्यू के तौर पर सेव किया गया
&lt;PhotoOverlay&gt; नहीं
<प्लेसमार्क> हां
&lt;Point&gt; हां
&lt;Polygon&gt; हां
&lt;PolyStyle&gt; हां
&lt;range&gt; हां
&lt;refreshInterval&gt; नहीं
&lt;refreshMode&gt; नहीं
&lt;refreshVisibility&gt; नहीं
&lt;Region&gt; हां
&lt;ResourceMap&gt; लागू नहीं &lt;Model&gt; समर्थित नहीं है
&lt;rightFov&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;roll&gt; लागू नहीं &lt;Camera&gt; और <मॉडल> समर्थित नहीं हैं
&lt;rotation&gt; हां
&lt;rotationXY&gt; नहीं
&lt;Scale&gt; लागू नहीं &lt;Model&gt; समर्थित नहीं है
&lt;scale&gt; हां
&lt;Schema&gt; नहीं
&lt;SchemaData&gt; नहीं
&lt;ScreenOverlay&gt; नहीं
&lt;screenXY&gt; लागू नहीं &lt;ScreenOverlay&gt; समर्थित नहीं है
&lt;shape&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;SimpleData&gt; लागू नहीं &lt;SchemaData&gt; समर्थित नहीं हैं
&lt;SimpleField&gt; लागू नहीं &lt;Schema&gt; समर्थित नहीं हैं
&lt;size&gt; हां
&lt;Snippet&gt; नहीं
&lt;south&gt; हां
&lt;state&gt; लागू नहीं &lt;ListStyle&gt; समर्थित नहीं है
&lt;Style&gt; हां
&lt;StyleMap&gt; कुछ हद तक हाइलाइट की गई शैली नहीं दी गई है. इनलाइन स्टाइल मैप की सुविधा काम नहीं करती
&lt;styleUrl&gt; हां
&lt;targetHref&gt; नहीं &lt;Alias&gt; समर्थित नहीं है
&lt;tessellate&gt; नहीं
<text> हां
&lt;textColor&gt; नहीं
&lt;tileSize&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;tilt&gt; नहीं
&lt;TimeSpan&gt; नहीं
&lt;TimeStamp&gt; नहीं
&lt;topFov&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
<अपडेट करें> लागू नहीं &lt;NetworkLinkControl&lt; मौजूद नहीं है
&lt;value&gt; हां
&lt;viewBoundScale&gt; नहीं
&lt;viewFormat&gt; नहीं
&lt;viewRefreshMode&gt; नहीं
&lt;viewRefreshTime&gt; नहीं
&lt;ViewVolume&gt; लागू नहीं &lt;PhotoOverlay&gt; समर्थित नहीं है
&lt;visibility&gt; हां
&lt;west&gt; हां
&lt;when&gt; लागू नहीं &lt;TimeStamp&gt; समर्थित नहीं है
&lt;width&gt; हां