Google Maps KML ইমপোর্টিং ইউটিলিটি

প্ল্যাটফর্ম বেছে নিন: Android iOS JavaScript
  1. ভূমিকা
  2. KML লেয়ার যোগ করা
  3. KML লেয়ার মুছে দেওয়া
  4. KML কন্টেনার অ্যাক্সেস করা
  5. KML স্থান চিহ্ন ও KML গ্রাউন্ড ওভারলে অ্যাক্সেস করা
  6. KML প্রপার্টি অ্যাক্সেস করা
  7. KML-এ কাজ করে এমন ফিচার

ভূমিকা

KML হল XML ডেটা ফর্ম্যাটের এক্সটেনশন এবং এটি ম্যাপে ভৌগোলিক ডেটা দেখায়। এই ইউটিলিটি ব্যবহার করে, আপনি KML অবজেক্টকে ভৌগোলিক আকারে কনভার্ট করতে এবং ম্যাপের উপরে লেয়ার হিসেবে রেন্ডার করতে পারবেন। ম্যাপে KML ডেটা যোগ করতে ও সরাতে, যথাক্রমে addLayerToMap() ও removeLayerFromMap() কল করুন। KML অবজেক্টে প্রপার্টি অ্যাক্সেস করতে, যেকোনও স্থান চিহ্ন, GroundOverlay, ডকুমেন্ট বা ফোল্ডারে getProperties() কল করুন।

ম্যাপে KML লেয়ার যোগ করা

ম্যাপে ডেটা লেয়ার যোগ করতে, প্রথমে KmlLayer ক্লাসের একটি ইনস্ট্যান্স তৈরি করুন। KmlLayer ইনস্ট্যান্টিয়েট করার দুটি উপায় আছে।

স্থানীয় রিসোর্স থেকে KML ডেটাসেট ইমপোর্ট ও রেন্ডার করতে, আপনার এগুলি প্রয়োজন:

  • যে GoogleMap অবজেক্টে লেয়ার রেন্ডার করতে হবে।
  • KML ডেটা সহ একটি স্থানীয় রিসোর্স ফাইল।
  • একটি Context অবজেক্ট, যা একটি স্থানীয় রিসোর্স ফাইল খুলতে প্রয়োজন।

Kotlin

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

      

Java

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

      

লোকাল স্ট্রিম থেকে KML ডেটাসেট ইমপোর্ট ও রেন্ডার করতে, আপনার এগুলি প্রয়োজন:

  • একটি GoogleMap অবজেক্ট যেখানে লেয়ার রেন্ডার করতে হবে।
  • KML ডেটা সহ একটি InputStream।
  • Context অবজেক্ট, যা লোকাল রিসোর্স খোলার জন্য প্রয়োজন।

Kotlin

val inputStream: InputStream = context.resources.openRawResource(R.raw.kml_file)
val layer = KmlLayer(map, inputStream, context)

      

Java

InputStream inputStream = context.getResources().openRawResource(R.raw.kml_file);
KmlLayer layer = new KmlLayer(map, inputStream, context);

      

আপনি KmlLayer তৈরি করার পরে, ম্যাপে ইমপোর্ট করা ডেটা যোগ করতে addLayerToMap()() কল করুন।

Kotlin

layer.addLayerToMap()

      

Java

layer.addLayerToMap();

      

KML লেয়ার মুছে দেওয়া

ধরা যাক, আপনি এই KmlLayer তৈরি করেছেন:

Kotlin

val inputStream: InputStream = context.resources.openRawResource(R.raw.kml_file)
val layer = KmlLayer(map, inputStream, context)

      

Java

InputStream inputStream = context.getResources().openRawResource(R.raw.kml_file);
KmlLayer layer = new KmlLayer(map, inputStream, context);

      

ম্যাপ থেকে লেয়ার সরাতে, removeLayerFromMap()-এ কল করুন:

Kotlin

layer.removeLayerFromMap()

      

Java

kmlLayer.removeLayerFromMap();

      

KML কন্টেনার অ্যাক্সেস করা

আপনার লেয়ারে যোগ করা হয়েছে এমন যেকোনও কন্টেনার অ্যাক্সেস করতে, আপনার তৈরি করা লেয়ারে getContainers() কল করতে পারবেন। কোনও কন্টেনারে নেস্টেড কন্টেনার আছে কিনা তা চেক করতে, আপনি hasContainers() কল করতে পারেন। আপনার লেয়ারে আপনি যা করতে পারেন, ঠিক সেইভাবেই এইসব নেস্টেড কন্টেনার অ্যাক্সেস করতে, আপনি getContainers() কল করতে পারেন

KmlLayer বা KmlContainer:-এ নেস্ট করা নেই এমন কন্টেনার অ্যাক্সেস করতে

Kotlin

for (container in layer.getContainers()) {
    // 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.getContainers())
        }
    }

      

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.getPlacemarks()) {
    // Do something to Placemark
}

      

Java

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

      

KML প্রপার্টি অ্যাক্সেস করা

কোনও কন্টেনার বা স্থান চিহ্নের যেকোনও প্রপার্টি অ্যাক্সেস করতে, getProperty() কল করুন এবং এটিকে একটি প্রপার্টি কী দিন। এছাড়াও, আপনি hasProperty()-এ কল করে এটি আছে কিনা তা চেক করতে পারবেন। এই স্যাম্পেল থেকে জানা যায় যে, কোনও কন্টেনারে "নাম" প্রপার্টি ভ্যালু থাকলে, সেটি কীভাবে খুঁজে পাওয়া যায়।

Kotlin

for (container in layer.getContainers()) {
    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.getId()}")
}

      

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 এলিমেন্ট কাজ করে? মন্তব্য
<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> না
<মুছুন> না
<description> হ্যাঁ শুধু প্লেন টেক্সট, কোনও HTML কন্টেন্ট কাজ করে না
<displayMode> না
<displayName> না
<Document> হ্যাঁ
<drawOrder> হ্যাঁ
<east> হ্যাঁ
<end> প্রযোজ্য নয় <TimeSpan> কাজ করে না
<expires> না <NetworkLinkControl> কাজ করে না
<ExtendedData> আংশিকভাবে শুধুমাত্র টাইপ না করা <Data>, কোনও <SimpleData> বা <Schema> নেই এবং$[dataName] ফর্মের এন্টিটি রিপ্লেসমেন্ট কাজ করে না।
<extrude> না
<fill> হ্যাঁ
<flyToView> না <NetworkLinkControl> কাজ করে না
<Folder> হ্যাঁ
<gridOrigin> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<GroundOverlay> হ্যাঁ
<heading> হ্যাঁ
<hotSpot> হ্যাঁ
<href> হ্যাঁ
<httpQuery> না
<Icon> হ্যাঁ
<IconStyle> হ্যাঁ
<ImagePyramid> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<innerBoundaryIs> হ্যাঁ <LinearRing> অর্ডার থেকে পরোক্ষভাবে
<ItemIcon> প্রযোজ্য নয় <ListStyle> কাজ করে না
<key> হ্যাঁ
<kml> হ্যাঁ
<LabelStyle> না
<latitude> হ্যাঁ
<LatLonAltBox> না
<LatLonBox> হ্যাঁ
<leftFov> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<LinearRing> হ্যাঁ
<LineString> হ্যাঁ
<LineStyle> হ্যাঁ
<Link> না
<linkDescription> প্রযোজ্য নয় <NetworkLinkControl> কাজ করে না
<linkName> প্রযোজ্য নয় <NetworkLinkControl> কাজ করে না
<linkSnippet> প্রযোজ্য নয় <NetworkLinkControl> কাজ করে না
<listItemType> প্রযোজ্য নয় <ListStyle> কাজ করে না
<ListStyle> না
<Location> প্রযোজ্য নয় <Model> কাজ করে না
<Lod> হ্যাঁ
<longitude> হ্যাঁ
<LookAt> না
<maxAltitude> না
<maxFadeExtent> না
<maxHeight> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<maxLodPixels> না
<maxSessionLength> না
<maxWidth> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<message> না
<minAltitude> না
<minFadeExtent> না
<minLodPixels> না
<minRefreshPeriod> না <NetworkLink>
<Model> না
<MultiGeometry> হ্যাঁ
<name> হ্যাঁ
<near> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<NetworkLink> না
<NetworkLinkControl> না
<north> হ্যাঁ
<open> হ্যাঁ প্রপার্টির মান হিসেবে স্টোর করা হয়
<Orientation> প্রযোজ্য নয় <Model> কাজ করে না
<outerBoundaryIs> হ্যাঁ <LinearRing> অর্ডার থেকে অন্তর্নিহিতভাবে
<outline> হ্যাঁ
<overlayXY> না
<Pair> হ্যাঁ
<phoneNumber> আংশিকভাবে প্রপার্টির মান হিসেবে স্টোর করা হয়
<PhotoOverlay> না
<Placemark> হ্যাঁ
<Point> হ্যাঁ
<Polygon> হ্যাঁ
<PolyStyle> হ্যাঁ
<range> হ্যাঁ
<refreshInterval> না
<refreshMode> না
<refreshVisibility> না
<Region> হ্যাঁ
<ResourceMap> প্রযোজ্য নয় <Model> কাজ করে না
<rightFov> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<roll> প্রযোজ্য নয় <Camera> ও <Model> কাজ করে না
<rotation> হ্যাঁ
<rotationXY> না
<Scale> প্রযোজ্য নয় <Model> কাজ করে না
<scale> হ্যাঁ
<Schema> না
<SchemaData> না
<ScreenOverlay> না
<screenXY> প্রযোজ্য নয় <ScreenOverlay> কাজ করে না
<shape> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<SimpleData> প্রযোজ্য নয় <SchemaData> কাজ করে না
<SimpleField> প্রযোজ্য নয় <Schema> কাজ করে না
<size> হ্যাঁ
<Snippet> না
<south> হ্যাঁ
<state> প্রযোজ্য নয় <ListStyle> কাজ করে না
<Style> হ্যাঁ
<StyleMap> আংশিকভাবে হাইলাইট করা স্টাইল দেওয়া হয়নি। ইনলাইন StyleMaps কাজ করে না
<styleUrl> হ্যাঁ
<targetHref> না <Alias> কাজ করে না
<tessellate> না
<text> হ্যাঁ
<textColor> না
<tileSize> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<tilt> না
<TimeSpan> না
<TimeStamp> না
<topFov> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<Update> প্রযোজ্য নয় <NetworkLinkControl< কাজ করে না
<value> হ্যাঁ
<viewBoundScale> না
<viewFormat> না
<viewRefreshMode> না
<viewRefreshTime> না
<ViewVolume> প্রযোজ্য নয় <PhotoOverlay> কাজ করে না
<visibility> হ্যাঁ
<west> হ্যাঁ
<when> প্রযোজ্য নয় <TimeStamp> কাজ করে না
<width> হ্যাঁ