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

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট
  1. ভূমিকা
  2. আপনার মানচিত্রে একটি GeoJsonLayer যোগ করুন
  3. GeoJsonLayer সরান
  4. একটি জিওজেসন ফিচার যোগ করুন এবং সরান
  5. জিওজেসন বৈশিষ্ট্য এবং তাদের বৈশিষ্ট্যগুলি অ্যাক্সেস করুন
  6. জিওজেসন লেয়ার এবং জিওজেসন ফিচার স্টাইল করুন
  7. ডেমো অ্যাপটি দেখুন

ভূমিকা

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

আপনি লেয়ারে যুক্ত হওয়ার আগে বৈশিষ্ট্যগুলিতে প্রয়োগ করার জন্য ডিফল্ট শৈলী সেট করতে পারেন, getDefaultPointStyle() , getDefaultLineStringStyle() বা getDefaultPolygonStyle() কল করে এবং প্রতিটিতে শৈলী বিকল্পগুলি সেট করে৷ বিকল্পভাবে, আপনি একটি পৃথক GeoJsonFeature এর জন্য স্টাইল সেট করতে পারেন setPointStyle() , setLineStringStyle() বা setPolygonStyle() কল করে এবং প্রাসঙ্গিক স্টাইল অবজেক্টে পাস করে।

আপনার মানচিত্রে একটি GeoJsonLayer যোগ করুন

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

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

  • GoogleMap অবজেক্ট যেখানে লেয়ারটি রেন্ডার করা হবে
  • লেয়ারে যোগ করার জন্য JSONObject ডেটা ধারণকারী JSONObject

জাভা


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

      

কোটলিন


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

      

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

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

জাভা


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

      

কোটলিন


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

      

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

জাভা


layer.addLayerToMap();

      

কোটলিন


layer.addLayerToMap()

      

GeoJsonLayer সরান

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

জাভা


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

      

কোটলিন


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

      

GeoJsonLayer সাফ করতে, removeLayerFromMap() কল করুন

জাভা


layer.removeLayerFromMap();

      

কোটলিন


layer.removeLayerFromMap()

      

একটি জিওজেসন ফিচার যোগ করুন এবং সরান

GeoJSON-এর একটি বৈশিষ্ট্যে "বৈশিষ্ট্য" টাইপ আছে। এটিতে একটি জ্যামিতি, একটি সম্পত্তি সদস্য এবং ঐচ্ছিকভাবে একটি বাউন্ডিং বক্স বা একটি আইডি রয়েছে৷

আপনি পৃথকভাবে GeoJsonFeature অবজেক্ট তৈরি করতে পারেন, এবং সেগুলি GeoJsonLayer এ যোগ করতে পারেন।

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

জাভা


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

      

কোটলিন


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

      

স্তরটিতে বৈশিষ্ট্যটি যুক্ত করতে, addFeature() কল করুন এবং যোগ করতে বৈশিষ্ট্যটিতে পাস করুন।

জাভা


layer.addFeature(pointFeature);

      

কোটলিন


layer.addFeature(pointFeature)

      

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

জাভা


layer.removeFeature(pointFeature);

      

কোটলিন


layer.removeFeature(pointFeature)

      

জিওজেসন বৈশিষ্ট্য এবং তাদের বৈশিষ্ট্যগুলি অ্যাক্সেস করুন

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

জাভা


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

      

কোটলিন


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

      

প্রতিটি সংরক্ষিত বৈশিষ্ট্যের একটি নির্দিষ্ট বৈশিষ্ট্য আছে কিনা তা পরীক্ষা করতে এবং এটি বিদ্যমান থাকলে তা অ্যাক্সেস করতে getFeatures( getFeatures() পদ্ধতির সাথে hasProperty() এবং getProperty() পদ্ধতিগুলি ব্যবহার করুন।

জাভা


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

      

কোটলিন


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

      

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

মানচিত্রের জ্যামিতি বৈশিষ্ট্যগুলিতে ক্লিক ইভেন্টগুলি শুনতে আপনি GeoJsonLayer.OnFeatureClickListener() ব্যবহার করতে পারেন৷ নিম্নলিখিত উদাহরণটি একটি বৈশিষ্ট্যের শিরোনাম লগ করে যখন ব্যবহারকারী বৈশিষ্ট্যটিতে ক্লিক করেন:

জাভা


// 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"));
    }
});

      

কোটলিন


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

      

জিওজেসন লেয়ার এবং জিওজেসন ফিচার স্টাইল করুন

আপনি একটি GeoJsonLayer-এর জন্য ডিফল্ট শৈলী সেট করতে পারেন, অথবা স্তরে স্বতন্ত্র বৈশিষ্ট্য স্টাইল করতে পারেন।

ডিফল্ট শৈলী

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

একটি ডিফল্ট শৈলী প্রয়োগ করার পদক্ষেপগুলি নিম্নরূপ

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

উদাহরণ স্বরূপ, নিচের কোড নমুনাটি দেখায় কিভাবে ডিফল্ট পয়েন্ট স্টাইল পরিবর্তন করতে হয় যা একটি শিরোনাম এবং স্নিপেট সহ পয়েন্টগুলিকে টেনে আনা যায়।

জাভা


GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle("Hello, World!");
pointStyle.setSnippet("I am a draggable marker");

      

কোটলিন


val pointStyle = layer.defaultPointStyle
pointStyle.isDraggable = true
pointStyle.title = "Hello, World!"
pointStyle.snippet = "I am a draggable marker"

      

একটি GeoJsonFeature-এর জন্য নির্দিষ্ট শৈলী

বিকল্পভাবে, আপনি স্তরে পৃথক বৈশিষ্ট্য স্টাইল করতে পারেন। একটি GeoJsonFeature এ একটি স্টাইল প্রয়োগ করার ধাপগুলি নিম্নরূপ

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

উদাহরণস্বরূপ, জিওজেসন ফিচারের জন্য GeoJsonFeature শৈলীটি কীভাবে কাস্টমাইজ করা যায় যাতে এর রঙ লাল হয়।

জাভা


// 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);

      

কোটলিন


// 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

      

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

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