Google Maps Android GeoJSON ইউটিলিটি

প্ল্যাটফর্ম বেছে নিন: Android iOS JavaScript
  1. ভূমিকা
  2. আপনার ম্যাপে GeoJsonLayer যোগ করুন
  3. GeoJsonLayer সরিয়ে দিন
  4. GeoJsonFeature যোগ করা বা সরানো
  5. GeoJsonFeatures ও সেগুলির প্রপার্টি অ্যাক্সেস করা
  6. GeoJsonLayer ও GeoJsonFeatures-এর স্টাইল সেট করা
  7. ডেমো অ্যাপ দেখুন

ভূমিকা

GeoJSON হল JSON ডেটা ফর্ম্যাটের একটি এক্সটেনশন এবং এটি ভৌগোলিক ডেটা দেখায়। এই ইউটিলিটি ব্যবহার করে, আপনি GeoJSON ফর্ম্যাটে ভৌগোলিক ফিচার স্টোর করতে এবং ম্যাপের উপরে একটি লেয়ার হিসেবে সেগুলি রেন্ডার করতে পারবেন। ম্যাপে আপনার GeoJSON ডেটা যোগ করতে ও সরাতে, যথাক্রমে addLayerToMap() ও removeLayerFromMap() কল করুন। একইভাবে আপনি addFeature() এবং removeFeature() কল করে এবং GeoJsonFeature অবজেক্ট পাস করে ব্যক্তিগত ফিচার যোগ করতে এবং সরাতে পারেন। আপনি ফিচার অ্যাক্সেস করতে চাইলে, লেয়ারে যোগ করা হয়েছে এমন সব GeoJsonFeature অবজেক্টের একটি ইটারেবল পেতে, getFeatures()-এ কল করতে পারেন।

এছাড়াও, লেয়ারে যোগ করার আগে ফিচারে প্রয়োগ করার জন্য আপনি ডিফল্ট স্টাইল সেট করতে পারেন। এর জন্য getDefaultPointStyle(), getDefaultLineStringStyle() বা getDefaultPolygonStyle() কল করে প্রতিটি স্টাইল বিকল্প সেট করুন। বিকল্প হিসেবে, আপনি ফিচারে setPointStyle(), setLineStringStyle() বা setPolygonStyle() কল করে এবং প্রাসঙ্গিক স্টাইল অবজেক্ট পাস করে কোনও নির্দিষ্ট GeoJsonFeature-এর জন্য স্টাইল সেট করতে পারেন।

আপনার ম্যাপে GeoJsonLayer যোগ করা

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

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

  • GoogleMap অবজেক্ট যেখানে লেয়ার রেন্ডার করতে হবে
  • JSONObject-এ GeoJSON ডেটা আছে যা লেয়ারে যোগ করতে হবে

Kotlin

val geoJsonData: JSONObject = // JSONObject containing the GeoJSON data
val layer = GeoJsonLayer(map, geoJsonData)

      

Java

JSONObject geoJsonData = // JSONObject containing the GeoJSON data
GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);

      

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

  • GoogleMap অবজেক্ট যেখানে লেয়ার রেন্ডার করতে হবে
  • GeoJSON ডেটা সহ লোকাল রিসোর্স ফাইল
  • Context অবজেক্ট, যা লোকাল রিসোর্স ফাইল খোলার জন্য প্রয়োজন

Kotlin

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

      

Java

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

      

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

Kotlin

layer.addLayerToMap()

      

Java

layer.addLayerToMap();

      

GeoJsonLayer সরিয়ে দেওয়া

ধরে নেওয়া যাক যে আপনি এই লেয়ার যোগ করেছেন

Kotlin

val geoJsonData: JSONObject = // JSONObject containing the GeoJSON data
val layer = GeoJsonLayer(map, geoJsonData)

      

Java

JSONObject geoJsonData = // JSONObject containing the GeoJSON data
GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);

      

GeoJsonLayer মুছে দিতে, removeLayerFromMap() কল করুন

Kotlin

it.removeLayerFromMap()

      

Java

geoJsonLayer.removeLayerFromMap();

      

GeoJsonFeature যোগ করা ও সরানো

GeoJSON-এর একটি ফিচারের ধরন হল "ফিচার"। এতে একটি জ্যামিতি, একটি প্রপার্টি মেম্বার থাকে এবং ঐচ্ছিকভাবে একটি বাউন্ডিং বক্স বা আইডি থাকে।

আপনি আলাদা আলাদাভাবে GeoJsonFeature অবজেক্ট তৈরি করতে এবং GeoJsonLayer-এ যোগ করতে পারবেন।

ধরে নিন, আপনি এমন একটি ফিচার তৈরি করেছেন যাতে 0, 0-এ একটি পয়েন্ট আছে এবং এর প্রপার্টিতে একটি এন্ট্রি আছে এবং কোনও বাউন্ডিং বক্স নেই।

Kotlin

val point = GeoJsonPoint(LatLng(0.0, 0.0))
val properties = hashMapOf("Ocean" to "South Atlantic")
val pointFeature = GeoJsonFeature(point, "Origin", properties, null)

      

Java

GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<>();
properties.put("Ocean", "South Atlantic");
GeoJsonFeature pointFeature = new GeoJsonFeature(point, "Origin", properties, null);

      

লেয়ারে ফিচার যোগ করতে, addFeature() কল করুন এবং যোগ করার জন্য ফিচারটি পাস করুন।

Kotlin

layer.addFeature(pointFeature)

      

Java

layer.addFeature(pointFeature);

      

লেয়ারে কোনও ফিচার যোগ করার পরে সেটি সরাতে, removeFeature() কল করুন এবং যে ফিচারটি সরাতে চান সেটি পাস করুন।

Kotlin

layer.removeFeature(pointFeature)

      

Java

layer.removeFeature(pointFeature);

      

GeoJsonFeatures এবং সেগুলির প্রপার্টি অ্যাক্সেস করুন

লেয়ারে যোগ করা সব GeoJsonFeatures অ্যাক্সেস করতে, আপনি তৈরি করা GeoJsonLayer-এ getFeatures() কল করতে পারেন। এটি GeoJsonFeatures -এর একটি ইটারেবল রিটার্ন করবে যা আপনি নিচে দেখানো মতো একটি ফর-ইচ লুপ ব্যবহার করে অ্যাক্সেস করতে পারবেন।

Kotlin

for (feature in layer.features) {
    // Do something to the feature
}

      

Java

for (GeoJsonFeature feature : layer.getFeatures()) {
    // Do something to the feature
}

      

প্রতিটি সেভ করা ফিচারের নির্দিষ্ট প্রপার্টি আছে কিনা তা চেক করতে এবং সেটি থাকলে তা অ্যাক্সেস করতে, getFeatures() পদ্ধতির সাথে hasProperty() এবং getProperty() পদ্ধতি ব্যবহার করুন।

Kotlin

if (feature.hasProperty("Ocean")) {
    val oceanProperty = feature.getProperty("Ocean")
}

      

Java

if (feature.hasProperty("Ocean")) {
    String oceanProperty = feature.getProperty("Ocean");
}

      

GeoJSON জ্যামিতি ক্লিক ইভেন্ট

ম্যাপে জ্যামিতিক ফিচারের উপর ক্লিক ইভেন্ট শোনার জন্য আপনি GeoJsonLayer.OnFeatureClickListener() ব্যবহার করতে পারেন। ব্যবহারকারী কোনও ফিচারে ক্লিক করলে, নিম্নলিখিত উদাহরণটি সেই ফিচারের নাম লগ করে:

Kotlin

// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener { feature ->
    Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}")
}

      

Java

// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() {
    @Override
    public void onFeatureClick(Feature feature) {
        Log.i("GeoJsonClick", "Feature clicked: " + feature.getProperty("title"));
    }
});

      

GeoJsonLayer এবং GeoJsonFeatures স্টাইল করুন

আপনি GeoJsonLayer-এর জন্য ডিফল্ট স্টাইল সেট করতে পারেন অথবা লেয়ারের মধ্যে থাকা আলাদা আলাদা ফিচার স্টাইল করতে পারেন।

ডিফল্ট স্টাইল

GeoJsonLayer-এ, আপনি লেয়ারে যোগ করা যেকোনও পয়েন্ট, linestrings ও বহুভুজগুলির জন্য ডিফল্ট স্টাইল সেট করতে পারবেন। ডিফল্ট স্টাইল শুধুমাত্র তখনই প্রয়োগ করা হয় যদি ফিচারের কোনও জিওমেট্রির জন্য স্টাইল সেট করা না থাকে। ডিফল্ট স্টাইলে আপনি যেসব পরিবর্তন করবেন, সেগুলি ডিফল্ট স্টাইল ব্যবহার করা সব ফিচারেও দেখা যাবে।

ডিফল্ট স্টাইল প্রয়োগ করার ধাপগুলি নিচে দেওয়া হল

  1. প্রাসঙ্গিক ডিফল্ট স্টাইল অবজেক্ট ফিরিয়ে আনুন, এটি GeoJsonPointStyle, GeoJsonLineStringStyle অথবা GeoJsonPolygonStyle-এর মধ্যে যেকোনও একটি হতে পারে।
  2. স্টাইলে আপনার পছন্দের বিকল্প প্রয়োগ করুন।

যেমন, নিম্নলিখিত কোড স্যাম্পেল থেকে জানা যায় যে কীভাবে ডিফল্ট পয়েন্ট স্টাইল পরিবর্তন করতে হয়, যার ফলে পয়েন্টগুলি শিরোনাম ও স্নিপেট সহ ড্র্যাগ করা যায়।

Kotlin

val pointStyle = layer.getDefaultPointStyle()
pointStyle.setDraggable(true)
pointStyle.setTitle("Hello, World!")
pointStyle.setSnippet("I am a draggable marker")
val lineStyle = layer.getDefaultLineStringStyle()
val polygonStyle = layer.getDefaultPolygonStyle()

      

Java

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle("Hello, World!");
pointStyle.setSnippet("I am a draggable marker");
GeoJsonLineStringStyle lineStyle = layer.getDefaultLineStringStyle();
com.google.maps.android.data.geojson.GeoJsonPolygonStyle polygonStyle = layer.getDefaultPolygonStyle();

      

GeoJsonFeature-এর জন্য নির্দিষ্ট স্টাইল

অথবা, আপনি লেয়ারের মধ্যে থাকা আলাদা আলাদা ফিচার স্টাইল করতে পারেন। GeoJsonFeature-এ স্টাইল প্রয়োগ করার ধাপগুলি নিচে দেওয়া হল।

  1. প্রাসঙ্গিক স্টাইল অবজেক্ট তৈরি করুন, এটি হয় GeoJsonPointStyle, GeoJsonLineStringStyle অথবা GeoJsonPolygonStyle হতে পারে।
  2. স্টাইলে আপনার পছন্দের বিকল্প প্রয়োগ করুন।
  3. GeoJsonFeature-এর প্রাসঙ্গিক পদ্ধতিতে স্টাইল অবজেক্ট পাস করুন, যা setPointStyle(), setLineStringStyle() বা setPolygonStyle() হবে।

যেমন, GeoJsonFeature-এর জন্য লাইনস্ট্রিং স্টাইল কাস্টমাইজ করার পদ্ধতি এখানে দেওয়া হল যাতে এর রঙ লাল হয়।

Kotlin

// Create a new feature containing a linestring
val lineStringArray: MutableList<LatLng> = ArrayList()
lineStringArray.add(LatLng(0.0, 0.0))
lineStringArray.add(LatLng(50.0, 50.0))
val lineString = GeoJsonLineString(lineStringArray)
val lineStringFeature = GeoJsonFeature(lineString, null, null, null)

// Set the color of the linestring to red
val lineStringStyle = GeoJsonLineStringStyle()
lineStringStyle.color = Color.RED

// Set the style of the feature
lineStringFeature.lineStringStyle = lineStringStyle

      

Java

// Create a new feature containing a linestring
List<LatLng> lineStringArray = new ArrayList<LatLng>();
lineStringArray.add(new LatLng(0, 0));
lineStringArray.add(new LatLng(50, 50));
GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray);
GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null);

// Set the color of the linestring to red
GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
lineStringStyle.setColor(Color.RED);

// Set the style of the feature
lineStringFeature.setLineStringStyle(lineStringStyle);

      

ডেমো অ্যাপ দেখুন

URL থেকে GeoJSON ফাইল ইম্পোর্ট করা এবং এটি দিয়ে লেয়ার তৈরি করার উদাহরণ দেখতে, ইউটিলিটি লাইব্রেরির সাথে শিপ করা ডেমো অ্যাপে GeoJsonDemoActivity দেখুন। সেট-আপ গাইড থেকে আপনি জানতে পারবেন যে কীভাবে ডেমো অ্যাপ চালাতে হয়।