ফিচার লেয়ারে বাউন্ডারি পলিগনের স্ট্রোক ও ফিল স্টাইল প্রয়োগ করতে:
স্টাইল ফ্যাক্টরি ফাংশন তৈরি করুন যা
FeatureLayer.StyleFactoryইন্টারফেস প্রয়োগ করে। এই ফাংশন ফিচার লেয়ারের জন্য স্টাইলিং লজিক নির্ধারণ করে।ফিচার লেয়ারে স্টাইল ফ্যাক্টরি ফাংশন প্রয়োগ করতে
FeatureLayer.setFeatureStyle()কল করুন।
নিম্নলিখিত উদাহরণ ম্যাপটি একটি লোকালিটি ফিচার লেয়ারে একটি অঞ্চলের জন্য সীমানা পলিগন হাইলাইট করে দেখায়।
স্টাইল ফ্যাক্টরি ফাংশন তৈরি করুন
আপনি ফিচার লেয়ারে ফাংশন সেট করার সময় প্রভাবিত ফিচার লেয়ারের প্রতিটি পলিগনে স্টাইল ফ্যাক্টরি ফাংশন প্রয়োগ করা হয়। এই ফাংশনটি অবশ্যই
একটি FeatureStyle
অবজেক্ট রিটার্ন করবে যা পলিগন কীভাবে স্টাইল করতে হবে তা নির্দিষ্ট করে।
Maps SDK for Android, স্টাইল ফ্যাক্টরি ফাংশনে একটি
Feature
ইনস্ট্যান্স পাস করে। Feature ইনস্ট্যান্স ফিচারের মেটাডেটা দেখায়, যা আপনাকে স্টাইল ফ্যাক্টরি ফাংশনে মেটাডেটা অ্যাক্সেস করার সুবিধা দেয়।
স্টাইল ফ্যাক্টরি ফাংশন প্রয়োগ করা হলে, সেটি যেন সবসময় একই ধরনের ফলাফল দেখায়। যেমন, আপনি যদি কোনও ফিচার সেটে র্যান্ডম রঙ করতে চান, তাহলে ফিচার স্টাইল ফাংশনে র্যান্ডম অংশটি থাকা উচিত নয়, কারণ এর ফলে অপ্রত্যাশিত ফলাফল হতে পারে।
এই ফাংশন লেয়ারের প্রতিটি ফিচারের উপর রান করে বলে, অপ্টিমাইজেশন গুরুত্বপূর্ণ। রেন্ডারিংয়ের সময় যাতে প্রভাবিত না হয়, তার জন্য:
আপনার প্রয়োজন শুধু এমন ফিচার লেয়ার চালু করুন।
ফিচার লেয়ার আর ব্যবহার না করা হলে
FeatureLayer.setFeatureStyle(null)কল করুন।
বহুভুজ স্ট্রোক ও ফিল সেট করুন
স্টাইল ফ্যাক্টরি ফাংশনে বাউন্ডারি পলিগন স্টাইল করার সময়, আপনি এগুলি সেট করতে পারবেন:
ARGB কালার ফর্ম্যাটে পলিগন বর্ডারের স্ট্রোক কালার ও অস্বচ্ছতা, যেমনটি
Colorক্লাস দ্বারা সংজ্ঞায়িত করা হয়েছে। ডিফল্ট ভ্যালু হল ট্রান্সপারেন্ট (0x00000000)।স্ক্রিন পিক্সেলে পলিগন বর্ডারের স্ট্রোকের প্রস্থ। ডিফল্ট ভ্যালু হল ২।
ARGB কালার ফর্ম্যাটে পলিগনের ভরাট করার রঙ ও অস্বচ্ছতা, যেমন
Colorক্লাস দ্বারা নির্ধারিত। ডিফল্ট ভ্যালু হল ট্রান্সপারেন্ট (0x00000000)।
ফিচার টার্গেট করতে জায়গার আইডি খুঁজুন
অনেক অ্যাপ্লিকেশন ফিচারের লোকেশনের উপর ভিত্তি করে ফিচারে স্টাইল প্রয়োগ করে। যেমন, আপনি হয়ত বিভিন্ন দেশ, অঞ্চল বা এলাকার জন্য স্টাইলিং প্রয়োগ করতে চান। ফিচারের লোকেশন প্লেস আইডি দ্বারা দেখানো হয়।
প্লেস আইডি Google Places ডেটাবেস এবং Google Maps-এ কোনও জায়গাকে অনন্যভাবে শনাক্ত করে। কোনও জায়গার আইডি পেতে:
- Places API এবং জিওকোডিং ব্যবহার করুন যাতে নাম দিয়ে অঞ্চল সার্চ করা যায় এবং নির্দিষ্ট সীমার মধ্যে অঞ্চলের জন্য প্লেস আইডি পাওয়া যায়।
- ক্লিক ইভেন্ট থেকে ডেটা পান। এটি ক্লিক করা অঞ্চলের সাথে সম্পর্কিত ফিচার রিটার্ন করে, যা এর প্লেস আইডি এবং ফিচার টাইপ ক্যাটেগরিতে অ্যাক্সেস প্রদান করে।
অঞ্চল অনুযায়ী কভারেজ আলাদা হতে পারে। আরও জানতে Google-এর বাউন্ডারি কভারেজ দেখুন।
ভৌগোলিক নামগুলি অনেক সোর্স থেকে উপলভ্য, যেমন ভৌগোলিক নামের উপর USGS বোর্ড, এবং মার্কিন যুক্তরাষ্ট্রের গেজেটিয়ার ফাইল।
কোনও জায়গার আইডি পেতে PlaceFeature ব্যবহার করুন
PlaceFeature
ক্লাসটি হল Feature ক্লাসের একটি সাবক্লাস।
এটি জায়গার ফিচার (প্লেস আইডি সহ ফিচার) দেখায় যার মধ্যে
ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2,
COUNTRY, LOCALITY, POSTAL_CODE এবং SCHOOL_DISTRICT ধরনের ফিচার অন্তর্ভুক্ত।
প্লেস আইডি উপলভ্য হলে, Maps SDK for Android স্টাইল ফ্যাক্টরি ফাংশনে PlaceFeature-এর একটি ইনস্ট্যান্স পাস করে
যাতে আপনি ফিচারের লোকেশন নির্ধারণ করতে পারেন।
স্টাইল ফ্যাক্টরি উদাহরণ
এই উদাহরণটি Locality ফিচার লেয়ারে একটি পলিগনে স্টাইল ফ্যাক্টরি ফাংশন প্রয়োগ করে। স্টাইল ফ্যাক্টরি ফাংশন PlaceFeature ইনস্ট্যান্স ব্যবহার করে
ফিচারের প্লেস আইডি নির্ধারণ করে। প্লেস আইডি যদি হানা, হাওয়াইয়ের জন্য হয়, তাহলে
ফাংশনটি পলিগনে কাস্টম ফিল ও স্ট্রোক স্টাইল প্রয়োগ করে:
আপনি আগে থেকে এটি না করে থাকলে, শুরু করুন বিকল্পে গিয়ে নতুন ম্যাপ আইডি ও ম্যাপ স্টাইল তৈরি করার ধাপগুলি অনুসরণ করুন। এলাকা ফিচার লেয়ার চালু করতে ভুলবেন না।
ম্যাপ শুরু হলে Locality ফিচার লেয়ারের রেফারেন্স পান।
Java
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }Kotlin
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }স্টাইল ফ্যাক্টরি ফাংশন তৈরি করে Locality ফিচার লেয়ারে প্রয়োগ করুন।
নিম্নলিখিত উদাহরণে, ফিচারের স্থান আইডি হাওয়াইয়ের হানা ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") হলে তবেই ফাংশনটি প্রয়োগ করা হয়। উল্লেখ করা জায়গাটির আইডি যদি হানা, হাওয়াইয়ের না হয়, তাহলে স্টাইল প্রয়োগ করা হবে না।
Java
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }Kotlin
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
কোনও লেয়ার থেকে স্টাইলিং সরানো
কোনও লেয়ার থেকে স্টাইলিং সরাতে, FeatureLayer.setFeatureStyle(null) কল করুন।