অ্যান্ড্রয়েডের জন্য মানচিত্র SDK-এর মানচিত্রগুলিকে কাত করা এবং সহজ অঙ্গভঙ্গিগুলির সাথে ঘোরানো যেতে পারে, ব্যবহারকারীদের তাদের জন্য উপলব্ধি করে এমন একটি অভিযোজনের সাথে মানচিত্র সামঞ্জস্য করার ক্ষমতা দেয়৷ যেকোন জুম স্তরে, আপনি মানচিত্রটি প্যান করতে পারেন, বা ভেক্টর-ভিত্তিক মানচিত্রের টাইলগুলির ছোট পদচিহ্নের জন্য খুব কম বিলম্বে এর দৃষ্টিভঙ্গি পরিবর্তন করতে পারেন।
কোড নমুনা
গিটহাবের ApiDemos সংগ্রহস্থলে একটি নমুনা রয়েছে যা ক্যামেরা বৈশিষ্ট্যগুলি প্রদর্শন করে:
- ক্যামেরা ডেমো অ্যাক্টিভিটি - কোটলিন : ক্যামেরার অবস্থান পরিবর্তন করা
- CameraDemoActivity - Java : ক্যামেরার অবস্থান পরিবর্তন করা
ভূমিকা
ওয়েবে Google মানচিত্রের মতো, অ্যান্ড্রয়েডের জন্য মানচিত্র SDK মার্কেটর প্রজেকশন ব্যবহার করে আপনার ডিভাইসের স্ক্রিনে (একটি সমতল সমতল) বিশ্বের পৃষ্ঠ (একটি গোলক) উপস্থাপন করে। পূর্ব এবং পশ্চিম দিকে, মানচিত্রটি অসীমভাবে পুনরাবৃত্তি হয় কারণ পৃথিবী নির্বিঘ্নে নিজের চারপাশে মোড়ানো হয়। উত্তর এবং দক্ষিণ দিকে মানচিত্রটি প্রায় 85 ডিগ্রি উত্তর এবং 85 ডিগ্রি দক্ষিণে সীমাবদ্ধ।
দ্রষ্টব্য: একটি Mercator প্রজেকশনের দ্রাঘিমাংশে একটি সীমিত প্রস্থ থাকে কিন্তু অক্ষাংশে একটি অসীম উচ্চতা থাকে। আমরা আনুমানিক +/- 85 ডিগ্রীতে মার্কেটর প্রজেকশন ব্যবহার করে বেস ম্যাপ ইমেজরি "কাট অফ" করি ফলে ম্যাপের আকৃতি বর্গাকার করতে, যা টাইল নির্বাচনের জন্য সহজ যুক্তির অনুমতি দেয়।
অ্যান্ড্রয়েডের জন্য মানচিত্র SDK আপনাকে মানচিত্রের ক্যামেরা পরিবর্তন করে মানচিত্রের ব্যবহারকারীর দৃষ্টিভঙ্গি পরিবর্তন করতে দেয়৷
ক্যামেরার পরিবর্তনগুলি আপনার যোগ করা মার্কার, ওভারলে বা অন্যান্য গ্রাফিক্সে কোনো পরিবর্তন আনবে না, যদিও আপনি নতুন ভিউয়ের সাথে আরও ভালভাবে ফিট করার জন্য আপনার সংযোজনগুলি পরিবর্তন করতে চাইতে পারেন৷
যেহেতু আপনি মানচিত্রে ব্যবহারকারীর অঙ্গভঙ্গি শুনতে পারেন, আপনি ব্যবহারকারীর অনুরোধের প্রতিক্রিয়া হিসাবে মানচিত্র পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, কলব্যাক পদ্ধতি OnMapClickListener.onMapClick()
মানচিত্রে একটি একক ট্যাপে সাড়া দেয়। যেহেতু পদ্ধতিটি ট্যাপ অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ গ্রহণ করে, আপনি সেই বিন্দুতে প্যানিং বা জুম করে প্রতিক্রিয়া জানাতে পারেন। মার্কারের বুদ্বুদে ট্যাপ করার জন্য বা মার্কারে টেনে আনার অঙ্গভঙ্গিতে সাড়া দেওয়ার জন্য অনুরূপ পদ্ধতি উপলব্ধ।
আপনি ক্যামেরার নড়াচড়ার জন্যও শুনতে পারেন, যাতে আপনার অ্যাপটি যখন ক্যামেরা চলতে শুরু করে, বর্তমানে নড়াচড়া করে বা নড়াচড়া বন্ধ করে তখন একটি বিজ্ঞপ্তি পায়। বিস্তারিত জানার জন্য, ক্যামেরা পরিবর্তন ইভেন্টের নির্দেশিকা দেখুন।
ক্যামেরার অবস্থান
মানচিত্র দৃশ্যটি একটি সমতল সমতলে নিচের দিকে তাকিয়ে থাকা ক্যামেরার মতো মডেল করা হয়েছে। ক্যামেরার অবস্থান (এবং তাই মানচিত্রের রেন্ডারিং) নিম্নলিখিত বৈশিষ্ট্যগুলি দ্বারা নির্দিষ্ট করা হয়েছে: লক্ষ্য (অক্ষাংশ/দ্রাঘিমাংশের অবস্থান) , বিয়ারিং , টিল্ট , এবং জুম ।
লক্ষ্য (অবস্থান)
ক্যামেরা টার্গেট হল মানচিত্রের কেন্দ্রের অবস্থান, অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট করা হয়েছে।
অক্ষাংশ -85 এবং 85 ডিগ্রীর মধ্যে হতে পারে, অন্তর্ভুক্ত। এই ব্যাপ্তির উপরে বা নীচের মানগুলিকে এই ব্যাপ্তির মধ্যে সবচেয়ে কাছের মানের সাথে আটকানো হবে৷ উদাহরণস্বরূপ, 100-এর একটি অক্ষাংশ নির্দিষ্ট করলে মানটি 85-এ সেট করা হবে। দ্রাঘিমাংশ -180 এবং 180 ডিগ্রির মধ্যে, অন্তর্ভুক্ত। এই পরিসরের উপরে বা নীচের মানগুলি এমনভাবে মোড়ানো হবে যে সেগুলি পরিসরের মধ্যে পড়ে (-180, 180)৷ উদাহরণস্বরূপ, 480, 840 এবং 1200 সবগুলি 120 ডিগ্রিতে মোড়ানো হবে।বিয়ারিং (অভিযোজন)
ক্যামেরা বিয়ারিং কম্পাসের দিক নির্দেশ করে, সত্যিকারের উত্তর থেকে ডিগ্রীতে পরিমাপ করা হয়, মানচিত্রের উপরের প্রান্তের সাথে মিল রেখে। আপনি যদি মানচিত্রের কেন্দ্র থেকে মানচিত্রের উপরের প্রান্তে একটি উল্লম্ব রেখা আঁকেন, তাহলে ভারবহনটি ক্যামেরার শিরোনাম (ডিগ্রীতে পরিমাপ করা) সত্য উত্তরের সাথে সম্পর্কিত।
0 এর বিয়ারিং মানে মানচিত্রের শীর্ষটি সত্য উত্তরে নির্দেশ করে। একটি ভারবহন মান 90 মানে মানচিত্রের শীর্ষ বিন্দু পূর্বে (একটি কম্পাসে 90 ডিগ্রি)। মান 180 মানে মানচিত্রের শীর্ষ বিন্দু দক্ষিণে।
মানচিত্র API আপনাকে একটি মানচিত্রের বিয়ারিং পরিবর্তন করতে দেয়। উদাহরণস্বরূপ, কেউ গাড়ি চালাচ্ছেন তারা প্রায়শই তাদের ভ্রমণের দিকনির্দেশের সাথে সারিবদ্ধ করার জন্য একটি রাস্তার মানচিত্র ঘুরিয়ে দেন, যখন হাইকাররা একটি মানচিত্র এবং কম্পাস ব্যবহার করে সাধারণত মানচিত্রটিকে এমনভাবে নির্দেশ করে যাতে একটি উল্লম্ব রেখা উত্তর দিকে নির্দেশ করে।
কাত (দেখার কোণ)
কাত সরাসরি মানচিত্রের কেন্দ্রের অবস্থানের উপরে একটি চাপে ক্যামেরার অবস্থান নির্ধারণ করে, নাদির থেকে ডিগ্রীতে পরিমাপ করা হয় (ক্যামেরার নীচে সরাসরি নির্দেশ করা দিক)। 0 এর মান সরাসরি নিচে নির্দেশিত একটি ক্যামেরার সাথে মিলে যায়। 0-এর বেশি মানগুলি একটি ক্যামেরার সাথে মিলে যায় যা নির্দিষ্ট সংখ্যক ডিগ্রি দ্বারা দিগন্তের দিকে পিচ করা হয়৷ আপনি যখন দেখার কোণ পরিবর্তন করেন, তখন মানচিত্রটি দৃষ্টিকোণে প্রদর্শিত হয়, দূরের বৈশিষ্ট্যগুলি ছোট দেখায় এবং কাছাকাছি বৈশিষ্ট্যগুলি বড় দেখায়৷ নিম্নলিখিত চিত্রগুলি এটি প্রদর্শন করে।
নীচের চিত্রগুলিতে, দেখার কোণটি 0 ডিগ্রি। প্রথম চিত্রটি এর একটি পরিকল্পিত দেখায়; অবস্থান 1 হল ক্যামেরা অবস্থান, এবং অবস্থান 2 হল বর্তমান মানচিত্রের অবস্থান। ফলস্বরূপ মানচিত্রটি নীচে দেখানো হয়েছে।
নীচের চিত্রগুলিতে, দেখার কোণটি 45 ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি 3 অবস্থানে সোজা ওভারহেড (0 ডিগ্রি) এবং স্থল (90 ডিগ্রি) এর মধ্যে একটি চাপ বরাবর অর্ধেক সরে যায়। ক্যামেরাটি এখনও মানচিত্রের কেন্দ্র বিন্দুতে নির্দেশ করছে, কিন্তু অবস্থান 4 এ লাইন দ্বারা প্রতিনিধিত্ব করা এলাকাটি এখন দৃশ্যমান।
এই স্ক্রিনশটের মানচিত্রটি এখনও মূল মানচিত্রের মতো একই বিন্দুতে কেন্দ্রীভূত, তবে আরও বৈশিষ্ট্য মানচিত্রের শীর্ষে উপস্থিত হয়েছে৷ আপনি যখন 45 ডিগ্রির বেশি কোণ বাড়ান, ক্যামেরা এবং মানচিত্রের অবস্থানের মধ্যে বৈশিষ্ট্যগুলি আনুপাতিকভাবে বড় দেখায়, যখন মানচিত্রের অবস্থানের বাইরের বৈশিষ্ট্যগুলি আনুপাতিকভাবে ছোট দেখায়, একটি ত্রিমাত্রিক প্রভাব দেয়৷
জুম
ক্যামেরার জুম স্তর মানচিত্রের স্কেল নির্ধারণ করে। বড় জুম লেভেলে স্ক্রিনে আরও বিস্তারিত দেখা যায়, যখন ছোট জুম লেভেলে স্ক্রিনে বিশ্বের আরও অনেক কিছু দেখা যায়। জুম লেভেল 0 এ, মানচিত্রের স্কেল এমন যে সমগ্র বিশ্বের প্রস্থ প্রায় 256dp ( ঘনত্ব-স্বাধীন পিক্সেল )।
1 দ্বারা জুম স্তর বৃদ্ধি পর্দায় বিশ্বের প্রস্থ দ্বিগুণ. তাই জুম স্তর N এ, বিশ্বের প্রস্থ প্রায় 256 * 2 N dp। উদাহরণস্বরূপ, জুম লেভেল 2-এ, সমগ্র বিশ্ব প্রায় 1024dp প্রশস্ত।
জুম স্তর একটি পূর্ণসংখ্যা হতে হবে না. মানচিত্র দ্বারা অনুমোদিত জুম স্তরের পরিসীমা লক্ষ্য, মানচিত্রের ধরন এবং স্ক্রীনের আকার সহ বেশ কয়েকটি কারণের উপর নির্ভর করে। সীমার বাইরের যেকোনো সংখ্যা পরবর্তী নিকটতম বৈধ মানতে রূপান্তরিত হবে, যেটি হয় সর্বনিম্ন জুম স্তর বা সর্বোচ্চ জুম স্তর হতে পারে৷ নিম্নলিখিত তালিকাটি আনুমানিক বিশদ স্তর দেখায় যা আপনি প্রতিটি জুম স্তরে দেখতে আশা করতে পারেন:
- 1: বিশ্ব
- 5: ল্যান্ডমাস/মহাদেশ
- 10: শহর
- 15: রাস্তা
- 20: বিল্ডিং
ক্যামেরা সরানো
Maps API আপনাকে মানচিত্রে বিশ্বের কোন অংশটি দৃশ্যমান তা পরিবর্তন করতে দেয়। এটি ক্যামেরার অবস্থান পরিবর্তন করে অর্জন করা হয় (মানচিত্র সরানোর বিপরীতে)।
আপনি যখন ক্যামেরা পরিবর্তন করেন, আপনার কাছে ফলে ক্যামেরা মুভমেন্ট অ্যানিমেট করার বিকল্প থাকে। অ্যানিমেশন বর্তমান ক্যামেরা বৈশিষ্ট্য এবং নতুন ক্যামেরা বৈশিষ্ট্য মধ্যে interpolates. আপনি অ্যানিমেশনের সময়কাল নিয়ন্ত্রণ করতে পারেন।
ক্যামেরার অবস্থান পরিবর্তন করতে, CameraUpdate
ব্যবহার করে আপনাকে অবশ্যই উল্লেখ করতে হবে যে আপনি কোথায় ক্যামেরা সরাতে চান। মানচিত্র API আপনাকে CameraUpdateFactory
ব্যবহার করে বিভিন্ন ধরনের CameraUpdate
তৈরি করতে দেয়। নিম্নলিখিত বিকল্পগুলি উপলব্ধ:
জুম স্তর পরিবর্তন করা এবং সর্বনিম্ন/সর্বোচ্চ জুম সেট করা
CameraUpdateFactory.zoomIn()
এবং CameraUpdateFactory.zoomOut()
আপনাকে একটি CameraUpdate
দেয় যা জুম লেভেল 1.0 দ্বারা পরিবর্তন করে, অন্যান্য সমস্ত বৈশিষ্ট্য একই রাখে।
CameraUpdateFactory.zoomTo(float)
আপনাকে একটি CameraUpdate
দেয় যা জুম স্তরকে প্রদত্ত মানের সাথে পরিবর্তন করে, অন্যান্য সমস্ত বৈশিষ্ট্য একই রাখে।
CameraUpdateFactory.zoomBy(float)
এবং CameraUpdateFactory.zoomBy(float, Point)
আপনাকে একটি CameraUpdate
দেয় যা প্রদত্ত মান দ্বারা জুম স্তরকে বৃদ্ধি করে (বা হ্রাস করে, যদি মান ঋণাত্মক হয়)। পরেরটি স্ক্রিনে প্রদত্ত বিন্দুটিকে ঠিক করে যাতে এটি একই অবস্থানে থাকে (অক্ষাংশ/দ্রাঘিমাংশ) এবং তাই এটি অর্জন করার জন্য এটি ক্যামেরার অবস্থান পরিবর্তন করতে পারে।
একটি পছন্দের সর্বনিম্ন এবং/অথবা সর্বোচ্চ জুম স্তর সেট করা আপনার কাছে দরকারী বলে মনে হতে পারে। উদাহরণস্বরূপ, যদি আপনার অ্যাপটি আগ্রহের জায়গার চারপাশে একটি সংজ্ঞায়িত এলাকা দেখায় বা আপনি জুম স্তরের সীমিত সেট সহ একটি কাস্টম টাইল ওভারলে ব্যবহার করেন তবে ব্যবহারকারীর অভিজ্ঞতা নিয়ন্ত্রণ করতে এটি কার্যকর।
কোটলিন
private lateinit var map: GoogleMap map.setMinZoomPreference(6.0f) map.setMaxZoomPreference(14.0f)
জাভা
private GoogleMap map; map.setMinZoomPreference(6.0f); map.setMaxZoomPreference(14.0f);
মনে রাখবেন যে এমন প্রযুক্তিগত বিবেচনা রয়েছে যা API-কে ব্যবহারকারীদের খুব কম বা খুব বেশি জুম করার অনুমতি দিতে বাধা দিতে পারে। উদাহরণস্বরূপ, স্যাটেলাইট বা ভূখণ্ডে বেস ম্যাপ টাইলসের তুলনায় কম সর্বোচ্চ জুম থাকতে পারে।
ক্যামেরার অবস্থান পরিবর্তন করা হচ্ছে
সাধারণ অবস্থান পরিবর্তনের জন্য দুটি সুবিধার পদ্ধতি রয়েছে। CameraUpdateFactory.newLatLng(LatLng)
আপনাকে একটি CameraUpdate
দেয় যা ক্যামেরার অক্ষাংশ এবং দ্রাঘিমাংশ পরিবর্তন করে, অন্যান্য সমস্ত বৈশিষ্ট্য সংরক্ষণ করে। CameraUpdateFactory.newLatLngZoom(LatLng, float)
আপনাকে একটি CameraUpdate
দেয় যা ক্যামেরার অক্ষাংশ, দ্রাঘিমাংশ এবং জুম পরিবর্তন করে, অন্যান্য সমস্ত বৈশিষ্ট্য সংরক্ষণ করে।
ক্যামেরার অবস্থান পরিবর্তনে সম্পূর্ণ নমনীয়তার জন্য, CameraUpdateFactory.newCameraPosition(CameraPosition)
ব্যবহার করুন যা আপনাকে একটি CameraUpdate
দেয় যা ক্যামেরাটিকে প্রদত্ত অবস্থানে নিয়ে যায়। একটি CameraPosition
হয় সরাসরি, new CameraPosition()
ব্যবহার করে অথবা একটি CameraPosition.Builder
দিয়ে new CameraPosition.Builder()
ব্যবহার করে প্রাপ্ত করা যেতে পারে।
প্যানিং (স্ক্রলিং)
CameraUpdateFactory.scrollBy(float, float)
আপনাকে একটি CameraUpdate
দেয় যা ক্যামেরার অক্ষাংশ এবং দ্রাঘিমাংশ পরিবর্তন করে যাতে মানচিত্রটি নির্দিষ্ট সংখ্যক পিক্সেল দ্বারা সরে যায়। একটি ইতিবাচক x মান ক্যামেরাটিকে ডানদিকে নিয়ে যায়, যাতে মানচিত্রটি বাম দিকে সরে গেছে বলে মনে হয়। একটি ধনাত্মক y মান ক্যামেরাটিকে নিচের দিকে নিয়ে যায়, যাতে মানচিত্রটি উপরে সরে গেছে বলে মনে হয়। বিপরীতভাবে, নেতিবাচক x মানগুলি ক্যামেরাটিকে বাম দিকে সরাতে দেয়, যাতে মানচিত্রটি ডানদিকে সরে গেছে এবং নেতিবাচক y মানগুলি ক্যামেরাটিকে উপরে নিয়ে যায়। স্ক্রলিং ক্যামেরার বর্তমান অভিযোজনের সাথে আপেক্ষিক। উদাহরণস্বরূপ, যদি ক্যামেরা 90 ডিগ্রির একটি বিয়ারিং থাকে, তাহলে পূর্বদিকে "উপর"।
সীমানা নির্ধারণ
মানচিত্রের সীমানা নির্ধারণ করা
কখনও কখনও ক্যামেরাটি এমনভাবে সরানো দরকারী যে আগ্রহের একটি সম্পূর্ণ এলাকা সর্বাধিক সম্ভাব্য জুম স্তরে দৃশ্যমান হয়। উদাহরণস্বরূপ, যদি আপনি ব্যবহারকারীর বর্তমান অবস্থানের পাঁচ মাইলের মধ্যে সমস্ত গ্যাস স্টেশন প্রদর্শন করেন, তাহলে আপনি ক্যামেরাটি এমনভাবে সরাতে চাইতে পারেন যাতে সেগুলি সমস্ত স্ক্রিনে দৃশ্যমান হয়। এটি করার জন্য, প্রথমে LatLngBounds
গণনা করুন যা আপনি পর্দায় দৃশ্যমান হতে চান। তারপরে আপনি CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding)
ব্যবহার করতে পারেন একটি CameraUpdate
পেতে যা ক্যামেরার অবস্থান পরিবর্তন করে যাতে প্রদত্ত LatLngBounds
সম্পূর্ণভাবে মানচিত্রের মধ্যে ফিট করে, নির্দিষ্ট করা প্যাডিং (পিক্সেলে) বিবেচনায় নিয়ে। প্রত্যাবর্তিত CameraUpdate
নিশ্চিত করে যে প্রদত্ত সীমানা এবং মানচিত্রের প্রান্তের মধ্যে ব্যবধান (পিক্সেলে) নির্দিষ্ট প্যাডিংয়ের মতো অন্তত হবে৷ মনে রাখবেন মানচিত্রের টিল্ট এবং বিয়ারিং উভয়ই 0 হবে।
কোটলিন
val australiaBounds = LatLngBounds( LatLng((-44.0), 113.0), // SW bounds LatLng((-10.0), 154.0) // NE bounds ) map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0))
জাভা
LatLngBounds australiaBounds = new LatLngBounds( new LatLng(-44, 113), // SW bounds new LatLng(-10, 154) // NE bounds ); map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0));
একটি এলাকার মধ্যে মানচিত্র কেন্দ্রীভূত করা
কিছু ক্ষেত্রে, আপনি চরম সীমানা অন্তর্ভুক্ত করার পরিবর্তে আপনার ক্যামেরাকে একটি সীমার মধ্যে কেন্দ্রীভূত করতে চাইতে পারেন। উদাহরণস্বরূপ, একটি ধ্রুবক জুম বজায় রাখার সময় একটি দেশের উপর ক্যামেরা কেন্দ্রীভূত করা। এই ক্ষেত্রে, আপনি একটি LatLngBounds
তৈরি করে এবং LatLngBounds
এর সাথে CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom)
ব্যবহার করে একই পদ্ধতি ব্যবহার করতে পারেন। getCenter()
পদ্ধতি। getCenter() পদ্ধতি LatLngBounds
এর ভৌগলিক কেন্দ্র ফিরিয়ে দেবে।
কোটলিন
val australiaBounds = LatLngBounds( LatLng((-44.0), 113.0), // SW bounds LatLng((-10.0), 154.0) // NE bounds ) map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.center, 10f))
জাভা
LatLngBounds australiaBounds = new LatLngBounds( new LatLng(-44, 113), // SW bounds new LatLng(-10, 154) // NE bounds ); map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.getCenter(), 10));
পদ্ধতির একটি ওভারলোড, newLatLngBounds(boundary, width, height, padding)
আপনাকে একটি আয়তক্ষেত্রের জন্য পিক্সেলে একটি প্রস্থ এবং উচ্চতা নির্দিষ্ট করতে দেয়, এই উদ্দেশ্যে যে এইগুলি মানচিত্রের মাত্রার সাথে মিলে যায়৷ আয়তক্ষেত্রটি এমনভাবে স্থাপন করা হয় যে এর কেন্দ্রটি মানচিত্রের দৃশ্যের মতোই হয় (যাতে যদি নির্দিষ্ট করা মাত্রাগুলি মানচিত্রের দৃশ্যের মতোই হয়, তাহলে আয়তক্ষেত্রটি মানচিত্রের দৃশ্যের সাথে মিলে যায়)। প্রত্যাবর্তিত CameraUpdate
ক্যামেরাটিকে এমনভাবে স্থানান্তরিত করবে যে নির্দিষ্ট LatLngBounds
গুলি প্রদত্ত আয়তক্ষেত্রের মধ্যে সর্বাধিক সম্ভাব্য জুম স্তরে স্ক্রিনে কেন্দ্রীভূত হবে, প্রয়োজনীয় প্যাডিংকে বিবেচনায় নিয়ে।
দ্রষ্টব্য: ম্যাপ লেআউটের মধ্য দিয়ে যাওয়ার পরে ক্যামেরাটি সরানোর জন্য ব্যবহার করা হলে CameraUpdate
তৈরি করার জন্য শুধুমাত্র সহজ পদ্ধতি newLatLngBounds(boundary, padding)
ব্যবহার করুন। লেআউটের সময়, এপিআই ম্যাপের ডিসপ্লে সীমানা গণনা করে যা বাউন্ডিং বাক্সটিকে সঠিকভাবে প্রজেক্ট করার জন্য প্রয়োজন। তুলনামূলকভাবে, আপনি যেকোন সময় newLatLngBounds(boundary, width, height, padding)
আরও জটিল পদ্ধতি দ্বারা ফিরে আসা CameraUpdate
ব্যবহার করতে পারেন, এমনকি মানচিত্রের লেআউট হওয়ার আগেই, কারণ API আপনার পাস করা আর্গুমেন্ট থেকে প্রদর্শনের সীমানা গণনা করে।
একটি নির্দিষ্ট এলাকায় ব্যবহারকারীর প্যানিং সীমাবদ্ধ করা
উপরের পরিস্থিতিতে, আপনি মানচিত্রের সীমানা সেট করেন কিন্তু ব্যবহারকারী তখন এই সীমানার বাইরে স্ক্রোল বা প্যান করতে পারেন। পরিবর্তে, আপনি মানচিত্রের ফোকাল পয়েন্ট (ক্যামেরা লক্ষ্য) এর lat/lng কেন্দ্রের সীমানাকে সীমাবদ্ধ করতে চাইতে পারেন যাতে ব্যবহারকারীরা শুধুমাত্র এই সীমার মধ্যে স্ক্রোল এবং প্যান করতে পারে। উদাহরণস্বরূপ, একটি শপিং সেন্টার বা বিমানবন্দরের জন্য একটি খুচরা অ্যাপ মানচিত্রটিকে একটি নির্দিষ্ট সীমার মধ্যে সীমাবদ্ধ করতে চাইতে পারে, ব্যবহারকারীদের সেই সীমানার মধ্যে স্ক্রোল এবং প্যান করতে দেয়।
কোটলিন
// Create a LatLngBounds that includes the city of Adelaide in Australia. val adelaideBounds = LatLngBounds( LatLng(-35.0, 138.58), // SW bounds LatLng(-34.9, 138.61) // NE bounds ) // Constrain the camera target to the Adelaide bounds. map.setLatLngBoundsForCameraTarget(adelaideBounds)
জাভা
// Create a LatLngBounds that includes the city of Adelaide in Australia. LatLngBounds adelaideBounds = new LatLngBounds( new LatLng(-35.0, 138.58), // SW bounds new LatLng(-34.9, 138.61) // NE bounds ); // Constrain the camera target to the Adelaide bounds. map.setLatLngBoundsForCameraTarget(adelaideBounds);
নিচের চিত্রটি একটি দৃশ্যকল্পকে চিত্রিত করে যখন ক্যামেরার লক্ষ্যটি ভিউপোর্টের থেকে সামান্য বড় একটি এলাকায় সীমাবদ্ধ থাকে। ব্যবহারকারী স্ক্রোল এবং প্যান করতে পারেন, যদি ক্যামেরার লক্ষ্য আবদ্ধ এলাকার মধ্যে থাকে। ক্রস ক্যামেরা টার্গেট প্রতিনিধিত্ব করে:
মানচিত্র সর্বদা ভিউপোর্ট পূরণ করে, এমনকি যদি এর ফলে ভিউপোর্ট নির্ধারিত সীমার বাইরের এলাকাগুলি দেখায়। উদাহরণস্বরূপ, আপনি যদি ক্যামেরা টার্গেটটি আবদ্ধ এলাকার একটি কোণে অবস্থান করেন, তাহলে কোণার বাইরের এলাকাটি ভিউপোর্টে দৃশ্যমান হবে কিন্তু ব্যবহারকারীরা সেই এলাকায় আরও স্ক্রোল করতে পারবেন না। নিম্নলিখিত চিত্রটি এই দৃশ্যটি চিত্রিত করে। ক্রস ক্যামেরা টার্গেট প্রতিনিধিত্ব করে:
নিম্নলিখিত চিত্রে, ক্যামেরার লক্ষ্যের একটি খুব সীমাবদ্ধ সীমা রয়েছে, যা ব্যবহারকারীকে মানচিত্রটি স্ক্রোল বা প্যান করার খুব কম সুযোগ দেয়। ক্রস ক্যামেরা টার্গেট প্রতিনিধিত্ব করে:
ক্যামেরা ভিউ আপডেট করা হচ্ছে
মানচিত্রে একটি CameraUpdate
প্রয়োগ করতে, আপনি হয় তাত্ক্ষণিকভাবে ক্যামেরাটি সরাতে পারেন বা ক্যামেরাটিকে মসৃণভাবে অ্যানিমেট করতে পারেন৷ প্রদত্ত CameraUpdate
সাথে সাথে সাথে ক্যামেরা সরাতে, আপনি GoogleMap.moveCamera(CameraUpdate)
কল করতে পারেন।
পরিবর্তনটি অ্যানিমেট করে আপনি ব্যবহারকারীর অভিজ্ঞতাকে আরও আনন্দদায়ক করে তুলতে পারেন, বিশেষ করে সংক্ষিপ্ত পদক্ষেপের জন্য। এটি করতে GoogleMap.moveCamera
কল করার পরিবর্তে GoogleMap.animateCamera
কল করুন। মানচিত্রটি নতুন বৈশিষ্ট্যে মসৃণভাবে চলে যাবে। এই পদ্ধতির সবচেয়ে বিস্তারিত রূপ, GoogleMap.animateCamera(cameraUpdate, duration, callback)
, তিনটি আর্গুমেন্ট অফার করে:
-
cameraUpdate
- ক্যামেরা কোথায় সরাতে হবে তা বর্ণনা করে
CameraUpdate
। -
callback
- একটি বস্তু যা
GoogleMap.CancellableCallback
প্রয়োগ করে। কাজ পরিচালনার জন্য এই সাধারণ ইন্টারফেস দুটি পদ্ধতি নির্ধারণ করে `অনক্যান্সেল()` এবং `অনফিনিশড()`। অ্যানিমেশনের জন্য, পদ্ধতিগুলিকে নিম্নলিখিত পরিস্থিতিতে বলা হয়:-
onFinish()
- অ্যানিমেশন কোনো বাধা ছাড়াই সম্পূর্ণ হলে আহ্বান করা হবে।
-
onCancel()
stopAnimation()
কল করে বা একটি নতুন ক্যামেরা মুভমেন্ট শুরু করার মাধ্যমে অ্যানিমেশন বাধাগ্রস্ত হলে আহ্বান করা হয়।বিকল্পভাবে, আপনি
GoogleMap.stopAnimation()
কল করলেও এটি ঘটতে পারে।
-
-
duration
- অ্যানিমেশনের কাঙ্ক্ষিত সময়কাল, মিলিসেকেন্ডে, একটি
int
হিসাবে।
নিম্নলিখিত কোড স্নিপেটগুলি ক্যামেরা সরানোর কিছু সাধারণ উপায় চিত্রিত করে৷
কোটলিন
val sydney = LatLng(-33.88, 151.21) val mountainView = LatLng(37.4, -122.1) // Move the camera instantly to Sydney with a zoom of 15. map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15f)) // Zoom in, animating the camera. map.animateCamera(CameraUpdateFactory.zoomIn()) // Zoom out to zoom level 10, animating with a duration of 2 seconds. map.animateCamera(CameraUpdateFactory.zoomTo(10f), 2000, null) // Construct a CameraPosition focusing on Mountain View and animate the camera to that position. val cameraPosition = CameraPosition.Builder() .target(mountainView) // Sets the center of the map to Mountain View .zoom(17f) // Sets the zoom .bearing(90f) // Sets the orientation of the camera to east .tilt(30f) // Sets the tilt of the camera to 30 degrees .build() // Creates a CameraPosition from the builder map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))
জাভা
LatLng sydney = new LatLng(-33.88,151.21); LatLng mountainView = new LatLng(37.4, -122.1); // Move the camera instantly to Sydney with a zoom of 15. map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15)); // Zoom in, animating the camera. map.animateCamera(CameraUpdateFactory.zoomIn()); // Zoom out to zoom level 10, animating with a duration of 2 seconds. map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); // Construct a CameraPosition focusing on Mountain View and animate the camera to that position. CameraPosition cameraPosition = new CameraPosition.Builder() .target(mountainView ) // Sets the center of the map to Mountain View .zoom(17) // Sets the zoom .bearing(90) // Sets the orientation of the camera to east .tilt(30) // Sets the tilt of the camera to 30 degrees .build(); // Creates a CameraPosition from the builder map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));