- ভূমিকা
- আপনার ম্যাপে GeoJsonLayer যোগ করুন
- GeoJsonLayer সরিয়ে দিন
- GeoJsonFeature যোগ করা বা সরানো
- GeoJsonFeatures ও সেগুলির প্রপার্টি অ্যাক্সেস করা
- GeoJsonLayer ও GeoJsonFeatures-এর স্টাইল সেট করা
- ডেমো অ্যাপ দেখুন
ভূমিকা
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 ও বহুভুজগুলির জন্য ডিফল্ট স্টাইল সেট করতে পারবেন। ডিফল্ট স্টাইল শুধুমাত্র তখনই প্রয়োগ করা হয় যদি ফিচারের কোনও জিওমেট্রির জন্য স্টাইল সেট করা না থাকে। ডিফল্ট স্টাইলে আপনি যেসব পরিবর্তন করবেন, সেগুলি ডিফল্ট স্টাইল ব্যবহার করা সব ফিচারেও দেখা যাবে।
ডিফল্ট স্টাইল প্রয়োগ করার ধাপগুলি নিচে দেওয়া হল
- প্রাসঙ্গিক ডিফল্ট স্টাইল অবজেক্ট ফিরিয়ে আনুন, এটি
GeoJsonPointStyle,GeoJsonLineStringStyleঅথবাGeoJsonPolygonStyle-এর মধ্যে যেকোনও একটি হতে পারে। - স্টাইলে আপনার পছন্দের বিকল্প প্রয়োগ করুন।
যেমন, নিম্নলিখিত কোড স্যাম্পেল থেকে জানা যায় যে কীভাবে ডিফল্ট পয়েন্ট স্টাইল পরিবর্তন করতে হয়, যার ফলে পয়েন্টগুলি শিরোনাম ও স্নিপেট সহ ড্র্যাগ করা যায়।
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-এ স্টাইল প্রয়োগ করার
ধাপগুলি নিচে দেওয়া হল।
- প্রাসঙ্গিক স্টাইল অবজেক্ট তৈরি করুন, এটি হয়
GeoJsonPointStyle,GeoJsonLineStringStyleঅথবাGeoJsonPolygonStyleহতে পারে। - স্টাইলে আপনার পছন্দের বিকল্প প্রয়োগ করুন।
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 দেখুন। সেট-আপ গাইড থেকে আপনি জানতে পারবেন যে কীভাবে
ডেমো অ্যাপ চালাতে হয়।