অ্যান্ড্রয়েডের জন্য Google মানচিত্র API আপনার অ্যাপ্লিকেশনের জন্য কাস্টমাইজ করার জন্য আপনার মানচিত্রের আকারগুলি যোগ করার কিছু সহজ উপায় অফার করে৷
- একটি
Polyline
হল সংযুক্ত লাইন সেগমেন্টগুলির একটি সিরিজ যা আপনি যেকোন আকৃতি তৈরি করতে পারেন এবং মানচিত্রে পাথ এবং রুটগুলি চিহ্নিত করতে ব্যবহার করা যেতে পারে। - একটি
Polygon
একটি আবদ্ধ আকৃতি যা মানচিত্রে এলাকা চিহ্নিত করতে ব্যবহার করা যেতে পারে। - একটি
Circle
হল মানচিত্রে আঁকা পৃথিবীর পৃষ্ঠে একটি বৃত্তের ভৌগলিকভাবে সঠিক অভিক্ষেপ।
এই সমস্ত আকারের জন্য, আপনি বেশ কয়েকটি বৈশিষ্ট্য পরিবর্তন করে তাদের চেহারা কাস্টমাইজ করতে পারেন।
কোড নমুনা
এলাকা এবং রুটগুলি উপস্থাপন করতে বহুভুজ এবং পলিলাইন যোগ করার টিউটোরিয়ালটিতে একটি সাধারণ অ্যান্ড্রয়েড অ্যাপের জন্য সমস্ত কোড অন্তর্ভুক্ত রয়েছে।
উপরন্তু, GitHub-এ ApiDemos সংগ্রহস্থলে এমন নমুনা রয়েছে যা আকার এবং তাদের বৈশিষ্ট্যগুলির ব্যবহার প্রদর্শন করে:
- CircleDemoActivity ( Java / Kotlin ): সার্কেল
- PolygonDemoActivity ( Java / Kotlin ): বহুভুজ
- পলিলাইন ডেমো অ্যাক্টিভিটি ( জাভা / কোটলিন ): পলিলাইন
পলিলাইন
Polyline
ক্লাস মানচিত্রে সংযুক্ত লাইন অংশগুলির একটি সেট সংজ্ঞায়িত করে। একটি Polyline
অবজেক্ট LatLng
অবস্থানগুলির একটি সেট নিয়ে গঠিত এবং একটি ক্রমানুসারে সেই অবস্থানগুলিকে সংযুক্ত করে এমন একটি লাইন সেগমেন্ট তৈরি করে।
এই ভিডিওটি ম্যাপে একটি পাথ আঁকতে পলিলাইন ব্যবহার করে আপনার ব্যবহারকারীদের তারা যেখানে যাচ্ছে সেখানে পৌঁছাতে কীভাবে সাহায্য করবেন সে সম্পর্কে ধারণা দেয়৷
একটি পলিলাইন তৈরি করতে, প্রথমে একটি PolylineOptions
অবজেক্ট তৈরি করুন এবং এতে পয়েন্ট যোগ করুন। বিন্দু পৃথিবীর পৃষ্ঠের একটি বিন্দু প্রতিনিধিত্ব করে, এবং একটি LatLng
বস্তু হিসাবে প্রকাশ করা হয়। আপনি PolylineOptions
অবজেক্টে যে ক্রমানুসারে যোগ করেন সেই ক্রম অনুসারে পয়েন্টের মধ্যে লাইন সেগমেন্ট আঁকা হয়।
PolylineOptions
অবজেক্টে পয়েন্ট যোগ করতে, PolylineOptions.add()
কল করুন। লক্ষ্য করুন যে এই পদ্ধতিটি একটি পরিবর্তনশীল সংখ্যক প্যারামিটার নেয় যাতে আপনি একবারে একাধিক পয়েন্ট যুক্ত করতে সক্ষম হন (পয়েন্টগুলি ইতিমধ্যে একটি তালিকায় থাকলে আপনি PolylineOptions.addAll(Iterable<LatLng>)
কল করতে পারেন)।
তারপর আপনি GoogleMap.addPolyline(PolylineOptions)
কল করে একটি মানচিত্রে পলিলাইন যোগ করতে পারেন। পদ্ধতিটি একটি Polyline
বস্তু প্রদান করে যার সাহায্যে আপনি পরবর্তী সময়ে পলিলাইন পরিবর্তন করতে পারেন।
নিম্নলিখিত কোড স্নিপেট ব্যাখ্যা করে কিভাবে একটি মানচিত্রে একটি আয়তক্ষেত্র যোগ করতে হয়:
কোটলিন
// Instantiates a new Polyline object and adds points to define a rectangle val polylineOptions = PolylineOptions() .add(LatLng(37.35, -122.0)) .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(LatLng(37.35, -122.0)) // Closes the polyline. // Get back the mutable Polyline val polyline = map.addPolyline(polylineOptions)
জাভা
// Instantiates a new Polyline object and adds points to define a rectangle PolylineOptions polylineOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Get back the mutable Polyline Polyline polyline = map.addPolyline(polylineOptions);
আয়তক্ষেত্রটি নীচে দেখানো মানচিত্রে প্রদর্শিত হবে:
পলিলাইন যোগ করার পরে এর আকৃতি পরিবর্তন করতে, আপনি Polyline.setPoints()
কল করতে পারেন এবং পলিলাইনের জন্য পয়েন্টগুলির একটি নতুন তালিকা প্রদান করতে পারেন।
আপনি পলিলাইনের চেহারাটি মানচিত্রে যোগ করার আগে এবং এটি মানচিত্রে যোগ করার পরে উভয়ই কাস্টমাইজ করতে পারেন। আরও বিশদ বিবরণের জন্য নীচের উপস্থিতি কাস্টমাইজ করার বিভাগটি দেখুন।
পলিলাইন কাস্টমাইজেশন
পলিলাইনের চেহারা কাস্টমাইজ করার বিভিন্ন উপায় রয়েছে:
- বহুরঙের পলিলাইন পলিলাইন অংশগুলিকে বিভিন্ন রঙে সেট করে।
- গ্রেডিয়েন্ট পলিলাইন দুটি রঙের গ্রেডিয়েন্ট ব্যবহার করে একটি পলিলাইনকে রঙ করে।
- পুনরাবৃত্ত বিটম্যাপ ব্যবহার করে স্ট্যাম্পড পলিলাইন স্টাইল একটি পলিলাইন।
পলিলাইন কাস্টমাইজেশন ব্যবহার করতে, আপনাকে অবশ্যই Android এর জন্য Maps SDK-এর 18.1.0 বা তার পরবর্তী সংস্করণ ব্যবহার করতে হবে এবং Android রেন্ডারারের জন্য সর্বশেষ মানচিত্র SDK ব্যবহার করতে হবে ৷
একটি বহুবর্ণের পলিলাইন তৈরি করা হচ্ছে
আপনি স্প্যান ব্যবহার করতে পারেন পলিলাইনের অংশগুলিকে আলাদাভাবে রঙ করতে, StyleSpan
অবজেক্ট তৈরি করে, এবং addSpan()
বা addSpans()
পদ্ধতি ব্যবহার করে PolylineOptions
এ যোগ করে। ডিফল্টরূপে, অ্যারের প্রতিটি আইটেম সংশ্লিষ্ট লাইন সেগমেন্টের রঙ সেট করবে। নিম্নলিখিত উদাহরণ লাল এবং সবুজ অংশগুলির সাথে একটি পলিলাইন তৈরি করতে সেগমেন্টের রঙ সেটিং দেখায়:
কোটলিন
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(StyleSpan(Color.RED)) .addSpan(StyleSpan(Color.GREEN)) )
জাভা
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(Color.RED)) .addSpan(new StyleSpan(Color.GREEN)));
একটি গ্রেডিয়েন্ট পলিলাইন তৈরি করা হচ্ছে
স্ট্রোকের শুরু এবং শেষের রঙগুলি নির্দিষ্ট করতে আপনি দুটি 32-বিট আলফা-লাল-সবুজ-নীল (ARGB) পূর্ণসংখ্যা নির্দিষ্ট করে একটি গ্রেডিয়েন্ট সংজ্ঞায়িত করতে পারেন। PolylineOptions.addSpan()
কল করে শেপের অপশন অবজেক্টে এই প্রপার্টি সেট করুন। নিম্নলিখিত উদাহরণে উডল্যান্ড পার্ক চিড়িয়াখানা থেকে কার্কল্যান্ড, WA পর্যন্ত একটি লাল থেকে হলুদ গ্রেডিয়েন্ট পলিলাইন তৈরি করা দেখায়।
কোটলিন
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan( StyleSpan( StrokeStyle.gradientBuilder( Color.RED, Color.YELLOW ).build() ) ) )
জাভা
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));
একটি স্ট্যাম্পড পলিলাইন তৈরি করা হচ্ছে
আপনি একটি পুনরাবৃত্ত বিটম্যাপ টেক্সচারে একটি পলিলাইনের চেহারা সেট করতে পারেন। এটি করার জন্য, TextureStyle
এর একটি StampStyle
তৈরি করুন, তারপর এখানে দেখানো হিসাবে PolylineOptions.addSpan()
কল করে আকৃতির বিকল্প বস্তুতে এই বৈশিষ্ট্যটি সেট করুন:
কোটলিন
val stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build() val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()) map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(span) )
জাভা
StampStyle stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build(); StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()); map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(span));
পলিলাইন ঘটনা
ডিফল্টরূপে, পলিলাইন ক্লিকযোগ্য নয়। আপনি Polyline.setClickable(boolean)
কল করে ক্লিকযোগ্যতা সক্ষম এবং নিষ্ক্রিয় করতে পারেন।
ক্লিকযোগ্য পলিলাইনে ক্লিক ইভেন্ট শুনতে একটি OnPolylineClickListener
ব্যবহার করুন। মানচিত্রে এই শ্রোতাকে সেট করতে, GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
কল করুন। যখন একজন ব্যবহারকারী পলিলাইনে ক্লিক করেন, আপনি একটি onPolylineClick(Polyline)
কলব্যাক পাবেন।
বহুভুজ
Polygon
অবজেক্টগুলি Polyline
অবজেক্টের অনুরূপ যে তারা একটি ক্রমানুসারে স্থানাঙ্কের একটি সিরিজ নিয়ে গঠিত। যাইহোক, ওপেন-এন্ডেড হওয়ার পরিবর্তে, বহুভুজগুলি অভ্যন্তরীণ ভরাট সহ একটি বদ্ধ লুপের মধ্যে অঞ্চলগুলিকে সংজ্ঞায়িত করার জন্য ডিজাইন করা হয়েছে।
আপনি মানচিত্রে একটি Polygon
যোগ করতে পারেন যেভাবে আপনি একটি Polyline
যোগ করেন। প্রথমে একটি PolygonOptions
অবজেক্ট তৈরি করুন এবং এতে কিছু পয়েন্ট যোগ করুন। এই পয়েন্টগুলি বহুভুজের রূপরেখা তৈরি করবে। তারপরে আপনি GoogleMap.addPolygon(PolygonOptions)
কল করে মানচিত্রে বহুভুজ যোগ করুন যা একটি Polygon
বস্তু ফিরিয়ে দেবে।
নিম্নলিখিত কোড স্নিপেট একটি মানচিত্রে একটি আয়তক্ষেত্র যোগ করে।
কোটলিন
// Instantiates a new Polygon object and adds points to define a rectangle val rectOptions = PolygonOptions() .add( LatLng(37.35, -122.0), LatLng(37.45, -122.0), LatLng(37.45, -122.2), LatLng(37.35, -122.2), LatLng(37.35, -122.0) ) // Get back the mutable Polygon val polygon = map.addPolygon(rectOptions)
জাভা
// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions polygonOptions = new PolygonOptions() .add(new LatLng(37.35, -122.0), new LatLng(37.45, -122.0), new LatLng(37.45, -122.2), new LatLng(37.35, -122.2), new LatLng(37.35, -122.0)); // Get back the mutable Polygon Polygon polygon = map.addPolygon(polygonOptions);
বহুভুজ যোগ করার পর এর আকৃতি পরিবর্তন করতে, আপনি Polygon.setPoints()
কল করতে পারেন এবং বহুভুজের রূপরেখার জন্য বিন্দুগুলির একটি নতুন তালিকা প্রদান করতে পারেন।
আপনি এটিকে মানচিত্রে যোগ করার আগে এবং এটি মানচিত্রে যোগ করার পরে উভয়ই বহুভুজের চেহারাটি কাস্টমাইজ করতে পারেন। আরও বিশদ বিবরণের জন্য নীচের উপস্থিতি কাস্টমাইজ করার বিভাগটি দেখুন।
বহুভুজ স্বয়ংক্রিয় সমাপ্তি
উপরের উদাহরণের বহুভুজটি পাঁচটি স্থানাঙ্ক নিয়ে গঠিত, কিন্তু লক্ষ্য করুন যে প্রথম এবং শেষ স্থানাঙ্কগুলি একই অবস্থান, যা লুপকে সংজ্ঞায়িত করে। অনুশীলনে, তবে, যেহেতু বহুভুজ বদ্ধ অঞ্চলগুলিকে সংজ্ঞায়িত করে, আপনাকে এই শেষ স্থানাঙ্কটি সংজ্ঞায়িত করতে হবে না। যদি শেষ স্থানাঙ্কটি প্রথম থেকে আলাদা হয়, তাহলে API স্বয়ংক্রিয়ভাবে স্থানাঙ্কের ক্রম শেষে প্রথম স্থানাঙ্ক যুক্ত করে বহুভুজটিকে "বন্ধ" করবে।
নীচের দুটি বহুভুজ সমতুল্য, এবং তাদের প্রত্যেকের জন্য polygon.getPoints()
কল করলে সমস্ত 4 পয়েন্ট ফিরে আসবে।
কোটলিন
val polygon1 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(0.0, 0.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) ) val polygon2 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) )
জাভা
Polygon polygon1 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .strokeColor(Color.RED) .fillColor(Color.BLUE)); Polygon polygon2 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5)) .strokeColor(Color.RED) .fillColor(Color.BLUE));
একটি ফাঁপা বহুভুজ তৈরি করুন
একটি একক Polygon
বস্তুতে একাধিক পাথ একত্রিত করে জটিল আকার তৈরি করা যেতে পারে, যেমন ভরা রিং, বা "ডোনাটস" (যেখানে বহুভুজের অভ্যন্তরে "দ্বীপ" হিসাবে বহুভুজ অংশ দেখা যায়)। জটিল আকারগুলি সর্বদা একাধিক, সরল, পথের সংমিশ্রণ।
একই এলাকায় দুটি পথ সংজ্ঞায়িত করা আবশ্যক। দুটি অঞ্চলের মধ্যে বড়টি ভরাট এলাকাকে সংজ্ঞায়িত করে এবং এটি একটি সাধারণ বহুভুজ যার কোনো অতিরিক্ত বিকল্প নেই। তারপর, addHole()
পদ্ধতিতে একটি দ্বিতীয় পথ পাস করুন। যখন দ্বিতীয়, ছোট পথটি বৃহত্তর পথের দ্বারা সম্পূর্ণরূপে আবদ্ধ হয়, তখন মনে হবে যেন বহুভুজের একটি অংশ সরানো হয়েছে। যদি গর্তটি বহুভুজের রূপরেখাকে ছেদ করে, তাহলে বহুভুজটি কোনো ভরাট ছাড়াই রেন্ডার করা হবে।
নীচের স্নিপেটটি একটি ছোট আয়তক্ষেত্রাকার গর্ত সহ একটি একক আয়তক্ষেত্র তৈরি করবে।
কোটলিন
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
জাভা
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
নীচে দেখানো হিসাবে ফাঁপা বহুভুজ মানচিত্রে উপস্থিত হয়:
বহুভুজ ঘটনা
ডিফল্টরূপে, বহুভুজ ক্লিকযোগ্য নয়। আপনি Polygon.setClickable(boolean)
কল করে ক্লিকযোগ্যতা সক্ষম এবং নিষ্ক্রিয় করতে পারেন।
ক্লিকযোগ্য বহুভুজে ক্লিক ইভেন্ট শুনতে একটি OnPolygonClickListener
ব্যবহার করুন। মানচিত্রে এই শ্রোতাকে সেট করতে, GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
কল করুন। যখন একজন ব্যবহারকারী বহুভুজটিতে ক্লিক করেন, আপনি একটি onPolygonClick(Polygon)
কলব্যাক পাবেন।
চেনাশোনা
একটি জেনেরিক Polygon
ক্লাস ছাড়াও, ম্যাপ এপিআই Circle
অবজেক্টের জন্য নির্দিষ্ট শ্রেণীও অন্তর্ভুক্ত করে, যাতে তাদের নির্মাণ সহজ হয়।
একটি বৃত্ত তৈরি করতে, আপনাকে অবশ্যই নিম্নলিখিত দুটি বৈশিষ্ট্য উল্লেখ করতে হবে:
- একটি
LatLng
হিসাবেcenter
। - মিটারে
radius
।
তারপরে একটি বৃত্তকে পৃথিবীর পৃষ্ঠের সমস্ত বিন্দুর সেট হিসাবে সংজ্ঞায়িত করা হয় যা প্রদত্ত center
থেকে radius
মিটার দূরে। ম্যাপ এপিআই দ্বারা ব্যবহৃত মার্কেটর প্রজেকশন কীভাবে সমতল পৃষ্ঠে একটি গোলক রেন্ডার করে, তাই বিষুব রেখার কাছে অবস্থিত হলে এটি মানচিত্রে একটি প্রায় নিখুঁত বৃত্ত হিসাবে উপস্থিত হবে এবং ক্রমবর্ধমানভাবে অ-বৃত্তাকার (স্ক্রীনে) হিসাবে প্রদর্শিত হবে। বৃত্ত বিষুবরেখা থেকে দূরে সরে যায়।
এটি যোগ করার পরে বৃত্তের আকৃতি পরিবর্তন করতে, আপনি Circle.setRadius()
বা Circle.setCenter()
কল করতে পারেন এবং নতুন মান প্রদান করতে পারেন।
আপনি ম্যাপে যোগ করার আগে এবং ম্যাপে যোগ করার পরে বৃত্তের চেহারা কাস্টমাইজ করতে পারেন। আরও বিশদ বিবরণের জন্য নীচের উপস্থিতি কাস্টমাইজ করার বিভাগটি দেখুন।
নিম্নলিখিত কোড স্নিপেট একটি CircleOptions
অবজেক্ট তৈরি করে এবং GoogleMap.addCircle(CircleOptions)
কল করে মানচিত্রে একটি বৃত্ত যোগ করে:
কোটলিন
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
জাভা
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
বৃত্তের ঘটনা
ডিফল্টরূপে, চেনাশোনাগুলি ক্লিকযোগ্য নয়৷ আপনি CircleOptions.clickable(boolean)
এর সাথে GoogleMap.addCircle()
কল করে বা Circle.setClickable(boolean)
কল করে ক্লিকযোগ্যতা সক্ষম এবং নিষ্ক্রিয় করতে পারেন।
একটি ক্লিকযোগ্য বৃত্তে ক্লিক ইভেন্টগুলি শুনতে একটি OnCircleClickListener
ব্যবহার করুন৷ এই শ্রোতাকে মানচিত্রে সেট করতে, GoogleMap.setOnCircleClickListener(OnCircleClickListener)
কল করুন।
যখন একজন ব্যবহারকারী একটি বৃত্তে ক্লিক করেন, আপনি একটি onCircleClick(Circle)
কলব্যাক পাবেন, যেমনটি নিম্নলিখিত কোড নমুনায় দেখানো হয়েছে:
কোটলিন
val circle = map.addCircle( CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) .strokeWidth(10f) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true) ) map.setOnCircleClickListener { // Flip the r, g and b components of the circle's stroke color. val strokeColor = it.strokeColor xor 0x00ffffff it.strokeColor = strokeColor }
জাভা
Circle circle = map.addCircle(new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000) .strokeWidth(10) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true)); map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() { @Override public void onCircleClick(Circle circle) { // Flip the r, g and b components of the circle's stroke color. int strokeColor = circle.getStrokeColor() ^ 0x00ffffff; circle.setStrokeColor(strokeColor); } });
চেহারা কাস্টমাইজ করা
ম্যাপে যোগ করার আগে (অপশন অবজেক্টে পছন্দসই সম্পত্তি উল্লেখ করে) অথবা ম্যাপে যোগ করার পরে আপনি আকৃতির চেহারা পরিবর্তন করতে পারেন। গেটারগুলি সমস্ত বৈশিষ্ট্যের জন্যও উন্মুক্ত করা হয় যাতে আপনি সহজেই আকারের বর্তমান অবস্থা অ্যাক্সেস করতে পারেন।
নিম্নলিখিত স্নিপেটটি মেলবোর্ন থেকে পার্থ পর্যন্ত জিওডেসিক সেগমেন্ট সহ একটি ঘন নীল পলিলাইন যোগ করে। নীচের বিভাগগুলি এই বৈশিষ্ট্যগুলিকে আরও বিশদে ব্যাখ্যা করবে।
কোটলিন
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
জাভা
Polyline polyline = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
মানচিত্রটি নীচে দেখানো হিসাবে প্রদর্শিত হবে:
দ্রষ্টব্য: যদিও এইগুলির বেশিরভাগই বর্ণিত যে কোনও আকারে প্রয়োগ করা যেতে পারে, তবে কিছু বৈশিষ্ট্য নির্দিষ্ট আকারের জন্য অর্থপূর্ণ নাও হতে পারে (যেমন, একটি পলিলাইনের একটি ভরাট রঙ থাকতে পারে না কারণ এটির অভ্যন্তর নেই)।
স্ট্রোক রঙ
স্ট্রোকের রঙ হল একটি 32-বিট আলফা-লাল-সবুজ-নীল (ARGB) পূর্ণসংখ্যা যা আকৃতির স্ট্রোকের অস্বচ্ছতা এবং রঙ নির্দিষ্ট করে। *Options.strokeColor()
(অথবা পলিলাইনের ক্ষেত্রে PolylineOptions.color()
কল করে আকৃতির অপশন অবজেক্টে এই বৈশিষ্ট্যটি সেট করুন। অনির্দিষ্ট থাকলে, ডিফল্ট স্ট্রোকের রঙ কালো ( Color.BLACK
)।
আকৃতিটি মানচিত্রে যোগ করার পরে, একটি পলিলাইনের জন্য getStrokeColor()
(বা getColor()
) কল করে স্ট্রোকের রঙ অ্যাক্সেস করা যেতে পারে এবং setColor() for a polyline
setStrokeColor()
( setColor() কল করে পরিবর্তন করা যেতে পারে।
রঙ পূরণ করুন
ভরাট রঙ শুধুমাত্র বহুভুজ এবং বৃত্তগুলিতে প্রযোজ্য। এটি পলিলাইনের ক্ষেত্রে প্রযোজ্য নয় কারণ তাদের সংজ্ঞায়িত অভ্যন্তরীণ অংশ নেই। একটি বহুভুজের জন্য, এর গর্তের ভিতরের অঞ্চলগুলি বহুভুজের অভ্যন্তরের অংশ নয় এবং যদি একটি ভরাট রঙ সেট করা হয় তবে সেগুলি রঙিন হবে না।
ভরাট রঙটি একটি 32-বিট আলফা-লাল-সবুজ-নীল (ARGB) পূর্ণসংখ্যা যা আকৃতির অভ্যন্তরের অস্বচ্ছতা এবং রঙ নির্দিষ্ট করে। *Options.fillColor()
কল করে আকৃতির অপশন অবজেক্টে এই বৈশিষ্ট্যটি সেট করুন। অনির্দিষ্ট থাকলে, ডিফল্ট স্ট্রোকের রঙ স্বচ্ছ ( Color.TRANSPARENT
)।
আকৃতিটি মানচিত্রে যোগ করার পরে, getFillColor()
কল করে পূরণের রঙটি অ্যাক্সেস করা যেতে পারে এবং setFillColor()
কল করে পরিবর্তন করা যেতে পারে।
স্ট্রোক প্রস্থ
লাইন স্ট্রোকের প্রস্থ, পিক্সেলে ফ্লোট হিসাবে (px)। মানচিত্র জুম করা হলে প্রস্থ স্কেল হয় না (অর্থাৎ, একটি আকৃতির সমস্ত জুম স্তরে একই স্ট্রোক প্রস্থ থাকবে)। একটি পলিলাইনের জন্য *Options.strokeWidth()
(বা PolylineOptions.width()
কল করে আকৃতির বিকল্প বস্তুতে এই বৈশিষ্ট্যটি সেট করুন। অনির্দিষ্ট থাকলে, ডিফল্ট স্ট্রোক 10 পিক্সেল।
আকৃতিটি মানচিত্রে যোগ করার পরে, একটি পলিলাইনের জন্য getStrokeWidth()
(বা getWidth()
কল করে স্ট্রোকের প্রস্থ অ্যাক্সেস করা যেতে পারে এবং setWidth() for a polyline
setStrokeWidth()
( setWidth() কল করে পরিবর্তন করা যেতে পারে।
স্ট্রোক প্যাটার্ন
ডিফল্ট স্ট্রোক প্যাটার্ন হল পলিলাইন এবং বহুভুজ এবং বৃত্তের রূপরেখার জন্য একটি কঠিন লাইন। আপনি PatternItem
বস্তুর একটি কাস্টম স্ট্রোক প্যাটার্ন নির্দিষ্ট করতে পারেন, যেখানে প্রতিটি আইটেম একটি ড্যাশ, একটি বিন্দু বা একটি ফাঁক।
নিম্নলিখিত নমুনাটি একটি পলিলাইনের জন্য একটি ডটের পুনরাবৃত্তি ক্রমানুসারে প্যাটার্ন সেট করে, তারপরে 20 পিক্সেল দৈর্ঘ্যের একটি ব্যবধান, 30 পিক্সেল দৈর্ঘ্যের একটি ড্যাশ এবং আরেকটি 20-পিক্সেল ব্যবধান।
কোটলিন
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
জাভা
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
আকৃতির জন্য নির্দিষ্ট প্রথম শীর্ষে প্রথম প্যাটার্ন আইটেম দিয়ে শুরু করে, লাইন বরাবর প্যাটার্ন পুনরাবৃত্তি হয়।
যৌথ প্রকার
পলিলাইন এবং বহুভুজের রূপরেখার জন্য, আপনি ডিফল্ট ফিক্সড মাইটার জয়েন্ট টাইপ প্রতিস্থাপন করতে একটি বেভেল বা গোলাকার JointType
নির্দিষ্ট করতে পারেন।
নিম্নলিখিত নমুনা একটি পলিলাইনে একটি বৃত্তাকার জয়েন্ট টাইপ প্রয়োগ করে:
কোটলিন
polyline.jointType = JointType.ROUND
জাভা
polyline.setJointType(JointType.ROUND);
যুগ্ম প্রকার লাইনের অভ্যন্তরীণ bends প্রভাবিত করে। যদি লাইনে একটি স্ট্রোক প্যাটার্ন থাকে যাতে ড্যাশগুলি অন্তর্ভুক্ত থাকে, তাহলে জয়েন্টের ধরনটিও প্রযোজ্য হয় যখন একটি ড্যাশ একটি জয়েন্টকে স্ট্র্যাডেল করে। যৌথ প্রকারগুলি বিন্দুগুলিকে প্রভাবিত করে না, কারণ তারা সর্বদা বৃত্তাকার হয়।
লাইন ক্যাপ
আপনি একটি পলিলাইনের প্রতিটি প্রান্তের জন্য একটি Cap
শৈলী নির্দিষ্ট করতে পারেন। বিকল্পগুলি হল বাট (ডিফল্ট), বর্গাকার, গোলাকার বা একটি কাস্টম বিটম্যাপ। PolylineOptions.startCap
এবং PolylineOptions.endCap
এ স্টাইল সেট করুন, অথবা উপযুক্ত গেটার এবং সেটার পদ্ধতি ব্যবহার করুন।
নিম্নলিখিত স্নিপেট একটি পলিলাইনের শুরুতে একটি বৃত্তাকার ক্যাপ নির্দিষ্ট করে।
কোটলিন
polyline.startCap = RoundCap()
জাভা
polyline.setStartCap(new RoundCap());
নিম্নলিখিত স্নিপেট শেষ ক্যাপের জন্য একটি কাস্টম বিটম্যাপ নির্দিষ্ট করে:
কোটলিন
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
জাভা
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
আপনি যখন একটি কাস্টম বিটম্যাপ ব্যবহার করেন, তখন আপনাকে পিক্সেলে একটি রেফারেন্স স্ট্রোক প্রস্থ নির্দিষ্ট করতে হবে। API সেই অনুযায়ী বিটম্যাপ স্কেল করে। রেফারেন্স স্ট্রোক প্রস্থ হল স্ট্রোক প্রস্থ যা আপনি ক্যাপের জন্য বিটম্যাপ ইমেজ ডিজাইন করার সময় ইমেজের আসল ডাইমেনশনে ব্যবহার করেছেন। ডিফল্ট রেফারেন্স স্ট্রোক প্রস্থ 10 পিক্সেল। ইঙ্গিত: রেফারেন্স স্ট্রোকের প্রস্থ নির্ধারণ করতে, একটি ইমেজ এডিটরে 100% জুম করে আপনার বিটম্যাপ ইমেজ খুলুন এবং ছবির সাপেক্ষে লাইন স্ট্রোকের কাঙ্খিত প্রস্থ প্লট করুন।
আপনি যদি বিটম্যাপ তৈরি করতে BitmapDescriptorFactory.fromResource()
ব্যবহার করেন, তাহলে নিশ্চিত করুন যে আপনি একটি ঘনত্ব-স্বাধীন সম্পদ ( nodpi ) ব্যবহার করেন।
জিওডেসিক সেগমেন্ট
জিওডেসিক সেটিং শুধুমাত্র পলিলাইন এবং বহুভুজের ক্ষেত্রে প্রযোজ্য। এটি চেনাশোনাগুলির ক্ষেত্রে প্রযোজ্য নয় কারণ সেগুলিকে বিভাগগুলির একটি সংগ্রহ হিসাবে সংজ্ঞায়িত করা হয়নি৷
জিওডেসিক সেটিং নির্ধারণ করে কিভাবে পলিলাইন/বহুভুজের পরপর শীর্ষবিন্দুগুলির মধ্যে রেখার অংশগুলি আঁকা হয়। জিওডেসিক সেগমেন্টগুলি হল যেগুলি পৃথিবীর পৃষ্ঠ (একটি গোলক) বরাবর সংক্ষিপ্ততম পথ অনুসরণ করে এবং প্রায়শই মার্কেটর প্রজেকশন সহ একটি মানচিত্রে বাঁকা রেখা হিসাবে উপস্থিত হয়। নন-জিওডেসিক সেগমেন্টগুলি মানচিত্রে সরল রেখা হিসাবে আঁকা হয়।
*Options.geodesic()
কল করে আকৃতির বিকল্প অবজেক্টে এই বৈশিষ্ট্যটি সেট করুন যেখানে true
নির্দেশ করে সেগমেন্টগুলিকে জিওডেসিক হিসাবে আঁকা উচিত এবং false
নির্দেশ করে যে বিভাগগুলিকে সরলরেখা হিসাবে আঁকা উচিত। অনির্দিষ্ট থাকলে, ডিফল্ট অ-জিওডেসিক সেগমেন্ট ( false
)।
আকৃতিটি মানচিত্রে যোগ করার পরে, জিওডেসিক সেটিংটি isGeodesic()
কল করে অ্যাক্সেস করা যেতে পারে এবং setGeodesic()
কল করে পরিবর্তন করা যেতে পারে।
জেড-সূচক
z-সূচকটি মানচিত্রের অন্যান্য ওভারলে (অন্যান্য আকার, গ্রাউন্ড ওভারলে এবং টাইল ওভারলে) এর সাপেক্ষে এই আকৃতির স্ট্যাক অর্ডার নির্দিষ্ট করে। একটি উচ্চ z-সূচক সহ একটি ওভারলে নিম্ন z-সূচী সহ ওভারলেগুলির উপরে আঁকা হয়। একই z-সূচক সহ দুটি ওভারলে একটি নির্বিচারে আঁকা হয়।
মনে রাখবেন যে অন্যান্য ওভারলেগুলির z-সূচক নির্বিশেষে মার্কারগুলি সর্বদা অন্যান্য ওভারলেগুলির উপরে আঁকা হয়।
*Options.zIndex()
কল করে আকৃতির অপশন অবজেক্টে এই বৈশিষ্ট্যটি সেট করুন। অনির্দিষ্ট হলে, ডিফল্ট z-সূচক 0
হয়। আকৃতিটি মানচিত্রে যোগ করার পরে, getZIndex()
কল করে z-index অ্যাক্সেস করা যেতে পারে এবং setZIndex()
কল করে পরিবর্তন করা যেতে পারে।
দৃশ্যমানতা
দৃশ্যমানতা নির্দিষ্ট করে যে আকৃতিটি মানচিত্রে আঁকা উচিত, যেখানে true
নির্দেশ করে এটি আঁকা উচিত এবং false
নির্দেশ করে যে এটি করা উচিত নয়। এটি আপনাকে সাময়িকভাবে মানচিত্রে একটি আকৃতি প্রদর্শন না করার অনুমতি দেয়৷ মানচিত্র থেকে স্থায়ীভাবে আকৃতি মুছে ফেলতে, সেই আকৃতিতে remove()
কল করুন।
*Options.visible()
কল করে আকৃতির অপশন অবজেক্টে এই বৈশিষ্ট্যটি সেট করুন। অনির্দিষ্ট হলে, ডিফল্ট দৃশ্যমানতা true
। আকৃতিটি মানচিত্রে যোগ করার পরে, isVisible()
কল করে দৃশ্যমানতা অ্যাক্সেস করা যেতে পারে এবং setVisible()
কল করে পরিবর্তন করা যেতে পারে।
একটি আকৃতির সাথে ডেটা সংযুক্ত করুন
আপনি আকারের setTag()
পদ্ধতি ব্যবহার করে পলিলাইন, বহুভুজ বা বৃত্তের সাথে একটি নির্বিচারে ডেটা অবজেক্ট সংরক্ষণ করতে পারেন এবং getTag()
ব্যবহার করে বস্তুটি পুনরুদ্ধার করতে পারেন। উদাহরণস্বরূপ, একটি পলিলাইনের সাথে একটি ডেটা অবজেক্ট সংরক্ষণ করতে Polyline.setTag()
কল করুন এবং ডেটা অবজেক্ট পুনরুদ্ধার করতে Polyline.getTag()
এ কল করুন।
নীচের কোডটি নির্দিষ্ট পলিলাইনের জন্য একটি নির্বিচারে ট্যাগ ( A
) সংজ্ঞায়িত করে:
কোটলিন
val polyline = map.addPolyline( PolylineOptions() .clickable(true) .add( LatLng(-35.016, 143.321), LatLng(-34.747, 145.592), LatLng(-34.364, 147.891), LatLng(-33.501, 150.217), LatLng(-32.306, 149.248), LatLng(-32.491, 147.309) ) ) polyline.tag = "A"
জাভা
Polyline polyline = map.addPolyline((new PolylineOptions()) .clickable(true) .add(new LatLng(-35.016, 143.321), new LatLng(-34.747, 145.592), new LatLng(-34.364, 147.891), new LatLng(-33.501, 150.217), new LatLng(-32.306, 149.248), new LatLng(-32.491, 147.309))); polyline.setTag("A");
আকৃতি সহ ডেটা সঞ্চয় এবং পুনরুদ্ধার করার জন্য যখন এটি উপযোগী হয় তখন পরিস্থিতিগুলির কিছু উদাহরণ এখানে দেওয়া হল:
- আপনার অ্যাপ্লিকেশান বিভিন্ন ধরণের আকারের জন্য পূরণ করতে পারে এবং ব্যবহারকারী যখন সেগুলিকে ক্লিক করে তখন আপনি তাদের সাথে ভিন্নভাবে আচরণ করতে চান৷
- আপনি এমন একটি সিস্টেমের সাথে ইন্টারফেস করতে পারেন যার অনন্য রেকর্ড শনাক্তকারী রয়েছে, যেখানে আকারগুলি সেই সিস্টেমের নির্দিষ্ট রেকর্ডগুলিকে উপস্থাপন করে।
- আকৃতির ডেটা আকৃতির জন্য z-সূচক নির্ধারণ করতে অগ্রাধিকার নির্দেশ করতে পারে।