ক্যামেরা এবং ভিউ

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

অ্যান্ড্রয়েডের জন্য মানচিত্র SDK-এর মানচিত্রগুলিকে কাত করা এবং সহজ অঙ্গভঙ্গিগুলির সাথে ঘোরানো যেতে পারে, ব্যবহারকারীদের তাদের জন্য উপলব্ধি করে এমন একটি অভিযোজনের সাথে মানচিত্র সামঞ্জস্য করার ক্ষমতা দেয়৷ যেকোন জুম স্তরে, আপনি মানচিত্রটি প্যান করতে পারেন, বা ভেক্টর-ভিত্তিক মানচিত্রের টাইলগুলির ছোট পদচিহ্নের জন্য খুব কম বিলম্বে এর দৃষ্টিভঙ্গি পরিবর্তন করতে পারেন।

কোড নমুনা

গিটহাবের ApiDemos সংগ্রহস্থলে একটি নমুনা রয়েছে যা ক্যামেরা বৈশিষ্ট্যগুলি প্রদর্শন করে:

ভূমিকা

ওয়েবে 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 হল বর্তমান মানচিত্রের অবস্থান। ফলস্বরূপ মানচিত্রটি নীচে দেখানো হয়েছে।

18 এর জুম স্তরে 0 ডিগ্রি দেখার কোণে অবস্থান করা একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট৷
ক্যামেরার ডিফল্ট দেখার কোণ সহ মানচিত্রটি প্রদর্শিত হয়।
ডায়াগ্রাম যা ক্যামেরার ডিফল্ট অবস্থান দেখায়, সরাসরি মানচিত্রের অবস্থানের উপরে, 0 ডিগ্রি কোণে।
ক্যামেরার ডিফল্ট দেখার কোণ।

নীচের চিত্রগুলিতে, দেখার কোণটি 45 ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি 3 অবস্থানে সোজা ওভারহেড (0 ডিগ্রি) এবং স্থল (90 ডিগ্রি) এর মধ্যে একটি চাপ বরাবর অর্ধেক সরে যায়। ক্যামেরাটি এখনও মানচিত্রের কেন্দ্র বিন্দুতে নির্দেশ করছে, কিন্তু অবস্থান 4 এ লাইন দ্বারা প্রতিনিধিত্ব করা এলাকাটি এখন দৃশ্যমান।

18 এর জুম স্তরে 45 ডিগ্রি দেখার কোণে অবস্থান করা একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট৷
মানচিত্রটি 45 ডিগ্রি দেখার কোণ সহ প্রদর্শিত হয়েছে।
চিত্রটি দেখায় যে ক্যামেরার দেখার কোণটি 45 ডিগ্রিতে সেট করা হয়েছে, জুম স্তরটি এখনও 18-এ সেট করা হয়েছে৷
45 ডিগ্রির একটি ক্যামেরা দেখার কোণ।

এই স্ক্রিনশটের মানচিত্রটি এখনও মূল মানচিত্রের মতো একই বিন্দুতে কেন্দ্রীভূত, তবে আরও বৈশিষ্ট্য মানচিত্রের শীর্ষে উপস্থিত হয়েছে৷ আপনি যখন 45 ডিগ্রির বেশি কোণ বাড়ান, ক্যামেরা এবং মানচিত্রের অবস্থানের মধ্যে বৈশিষ্ট্যগুলি আনুপাতিকভাবে বড় দেখায়, যখন মানচিত্রের অবস্থানের বাইরের বৈশিষ্ট্যগুলি আনুপাতিকভাবে ছোট দেখায়, একটি ত্রিমাত্রিক প্রভাব দেয়৷

জুম

ক্যামেরার জুম স্তর মানচিত্রের স্কেল নির্ধারণ করে। বড় জুম লেভেলে স্ক্রিনে আরও বিস্তারিত দেখা যায়, যখন ছোট জুম লেভেলে স্ক্রিনে বিশ্বের আরও অনেক কিছু দেখা যায়। জুম লেভেল 0 এ, মানচিত্রের স্কেল এমন যে সমগ্র বিশ্বের প্রস্থ প্রায় 256dp ( ঘনত্ব-স্বাধীন পিক্সেল )।

1 দ্বারা জুম স্তর বৃদ্ধি পর্দায় বিশ্বের প্রস্থ দ্বিগুণ. তাই জুম স্তর N এ, বিশ্বের প্রস্থ প্রায় 256 * 2 N dp। উদাহরণস্বরূপ, জুম লেভেল 2-এ, সমগ্র বিশ্ব প্রায় 1024dp প্রশস্ত।

জুম স্তর একটি পূর্ণসংখ্যা হতে হবে না. মানচিত্র দ্বারা অনুমোদিত জুম স্তরের পরিসীমা লক্ষ্য, মানচিত্রের ধরন এবং স্ক্রীনের আকার সহ বেশ কয়েকটি কারণের উপর নির্ভর করে। সীমার বাইরের যেকোনো সংখ্যা পরবর্তী নিকটতম বৈধ মানতে রূপান্তরিত হবে, যেটি হয় সর্বনিম্ন জুম স্তর বা সর্বোচ্চ জুম স্তর হতে পারে৷ নিম্নলিখিত তালিকাটি আনুমানিক বিশদ স্তর দেখায় যা আপনি প্রতিটি জুম স্তরে দেখতে আশা করতে পারেন:

  • 1: বিশ্ব
  • 5: ল্যান্ডমাস/মহাদেশ
  • 10: শহর
  • 15: রাস্তা
  • 20: বিল্ডিং
নিম্নলিখিত চিত্রগুলি বিভিন্ন জুম স্তরের চাক্ষুষ চেহারা দেখায়:
5 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট৷
জুম লেভেল 5 এ একটি মানচিত্র।
15 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট৷
জুম লেভেল 15 এ একটি মানচিত্র।
জুম স্তর 20 এ একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 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);

      

নিচের চিত্রটি একটি দৃশ্যকল্পকে চিত্রিত করে যখন ক্যামেরার লক্ষ্যটি ভিউপোর্টের থেকে সামান্য বড় একটি এলাকায় সীমাবদ্ধ থাকে। ব্যবহারকারী স্ক্রোল এবং প্যান করতে পারেন, যদি ক্যামেরার লক্ষ্য আবদ্ধ এলাকার মধ্যে থাকে। ক্রস ক্যামেরা টার্গেট প্রতিনিধিত্ব করে:

ডায়াগ্রামে একটি ক্যামেরা LatLngBounds দেখানো হচ্ছে যা ভিউপোর্টের চেয়ে বড়।

মানচিত্র সর্বদা ভিউপোর্ট পূরণ করে, এমনকি যদি এর ফলে ভিউপোর্ট নির্ধারিত সীমার বাইরের এলাকাগুলি দেখায়। উদাহরণস্বরূপ, আপনি যদি ক্যামেরা টার্গেটটি আবদ্ধ এলাকার একটি কোণে অবস্থান করেন, তাহলে কোণার বাইরের এলাকাটি ভিউপোর্টে দৃশ্যমান হবে কিন্তু ব্যবহারকারীরা সেই এলাকায় আরও স্ক্রোল করতে পারবেন না। নিম্নলিখিত চিত্রটি এই দৃশ্যটি চিত্রিত করে। ক্রস ক্যামেরা টার্গেট প্রতিনিধিত্ব করে:

ক্যামেরা LatLngBounds এর নিচের ডানদিকে কোণায় অবস্থান করা ক্যামেরা লক্ষ্য দেখানো চিত্র।

নিম্নলিখিত চিত্রে, ক্যামেরার লক্ষ্যের একটি খুব সীমাবদ্ধ সীমা রয়েছে, যা ব্যবহারকারীকে মানচিত্রটি স্ক্রোল বা প্যান করার খুব কম সুযোগ দেয়। ক্রস ক্যামেরা টার্গেট প্রতিনিধিত্ব করে:

ডায়াগ্রামে একটি ক্যামেরা LatLngBounds দেখানো হচ্ছে যা ভিউপোর্টের চেয়ে ছোট।

ক্যামেরা ভিউ আপডেট করা হচ্ছে

মানচিত্রে একটি 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));

      

,
প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

অ্যান্ড্রয়েডের জন্য মানচিত্র SDK-এর মানচিত্রগুলিকে কাত করা এবং সহজ অঙ্গভঙ্গিগুলির সাথে ঘোরানো যেতে পারে, ব্যবহারকারীদের তাদের জন্য উপলব্ধি করে এমন একটি অভিযোজনের সাথে মানচিত্র সামঞ্জস্য করার ক্ষমতা দেয়৷ যেকোন জুম স্তরে, আপনি মানচিত্রটি প্যান করতে পারেন, বা ভেক্টর-ভিত্তিক মানচিত্রের টাইলগুলির ছোট পদচিহ্নের জন্য খুব কম বিলম্বে এর দৃষ্টিভঙ্গি পরিবর্তন করতে পারেন।

কোড নমুনা

গিটহাবের ApiDemos সংগ্রহস্থলে একটি নমুনা রয়েছে যা ক্যামেরা বৈশিষ্ট্যগুলি প্রদর্শন করে:

ভূমিকা

ওয়েবে 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 হল বর্তমান মানচিত্রের অবস্থান। ফলস্বরূপ মানচিত্রটি নীচে দেখানো হয়েছে।

18 এর জুম স্তরে 0 ডিগ্রি দেখার কোণে অবস্থান করা একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট৷
ক্যামেরার ডিফল্ট দেখার কোণ সহ মানচিত্রটি প্রদর্শিত হয়।
ডায়াগ্রাম যা ক্যামেরার ডিফল্ট অবস্থান দেখায়, সরাসরি মানচিত্রের অবস্থানের উপরে, 0 ডিগ্রি কোণে।
ক্যামেরার ডিফল্ট দেখার কোণ।

নীচের চিত্রগুলিতে, দেখার কোণটি 45 ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি 3 অবস্থানে সোজা ওভারহেড (0 ডিগ্রি) এবং স্থল (90 ডিগ্রি) এর মধ্যে একটি চাপ বরাবর অর্ধেক সরে যায়। ক্যামেরাটি এখনও মানচিত্রের কেন্দ্র বিন্দুতে নির্দেশ করছে, কিন্তু অবস্থান 4 এ লাইন দ্বারা প্রতিনিধিত্ব করা এলাকাটি এখন দৃশ্যমান।

18 এর জুম স্তরে 45 ডিগ্রি দেখার কোণে অবস্থান করা একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট৷
মানচিত্রটি 45 ডিগ্রি দেখার কোণ সহ প্রদর্শিত হয়েছে।
চিত্রটি দেখায় যে ক্যামেরার দেখার কোণটি 45 ডিগ্রিতে সেট করা হয়েছে, জুম স্তরটি এখনও 18-এ সেট করা হয়েছে৷
45 ডিগ্রির একটি ক্যামেরা দেখার কোণ।

এই স্ক্রিনশটের মানচিত্রটি এখনও মূল মানচিত্রের মতো একই বিন্দুতে কেন্দ্রীভূত, তবে আরও বৈশিষ্ট্য মানচিত্রের শীর্ষে উপস্থিত হয়েছে৷ আপনি যখন 45 ডিগ্রির বেশি কোণ বাড়ান, ক্যামেরা এবং মানচিত্রের অবস্থানের মধ্যে বৈশিষ্ট্যগুলি আনুপাতিকভাবে বড় দেখায়, যখন মানচিত্রের অবস্থানের বাইরের বৈশিষ্ট্যগুলি আনুপাতিকভাবে ছোট দেখায়, একটি ত্রিমাত্রিক প্রভাব দেয়৷

জুম

ক্যামেরার জুম স্তর মানচিত্রের স্কেল নির্ধারণ করে। বড় জুম লেভেলে স্ক্রিনে আরও বিস্তারিত দেখা যায়, যখন ছোট জুম লেভেলে স্ক্রিনে বিশ্বের আরও অনেক কিছু দেখা যায়। জুম লেভেল 0 এ, মানচিত্রের স্কেল এমন যে সমগ্র বিশ্বের প্রস্থ প্রায় 256dp ( ঘনত্ব-স্বাধীন পিক্সেল )।

1 দ্বারা জুম স্তর বৃদ্ধি পর্দায় বিশ্বের প্রস্থ দ্বিগুণ. তাই জুম স্তর N এ, বিশ্বের প্রস্থ প্রায় 256 * 2 N dp। উদাহরণস্বরূপ, জুম লেভেল 2-এ, সমগ্র বিশ্ব প্রায় 1024dp প্রশস্ত।

জুম স্তর একটি পূর্ণসংখ্যা হতে হবে না. মানচিত্র দ্বারা অনুমোদিত জুম স্তরের পরিসীমা লক্ষ্য, মানচিত্রের ধরন এবং স্ক্রীনের আকার সহ বেশ কয়েকটি কারণের উপর নির্ভর করে। সীমার বাইরের যেকোনো সংখ্যা পরবর্তী নিকটতম বৈধ মানতে রূপান্তরিত হবে, যেটি হয় সর্বনিম্ন জুম স্তর বা সর্বোচ্চ জুম স্তর হতে পারে৷ নিম্নলিখিত তালিকাটি আনুমানিক বিশদ স্তর দেখায় যা আপনি প্রতিটি জুম স্তরে দেখতে আশা করতে পারেন:

  • 1: বিশ্ব
  • 5: ল্যান্ডমাস/মহাদেশ
  • 10: শহর
  • 15: রাস্তা
  • 20: বিল্ডিং
নিম্নলিখিত চিত্রগুলি বিভিন্ন জুম স্তরের চাক্ষুষ চেহারা দেখায়:
5 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট৷
জুম লেভেল 5 এ একটি মানচিত্র।
15 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট৷
জুম লেভেল 15 এ একটি মানচিত্র।
জুম স্তর 20 এ একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 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 ব্যবহার করতে পারেন, এমনকি মানচিত্রটি লেআউট করার আগেই, কারণ এপিআই আপনি যে যুক্তিগুলি পাস করেছেন সেগুলি থেকে ডিসপ্লে সীমানা গণনা করে।

প্রদত্ত অঞ্চলে ব্যবহারকারীর প্যানিং সীমাবদ্ধ করা

উপরের পরিস্থিতিগুলিতে, আপনি মানচিত্রের সীমানা সেট করেছেন তবে ব্যবহারকারীরা এই সীমানার বাইরে স্ক্রোল করতে বা প্যান করতে পারেন। পরিবর্তে, আপনি মানচিত্রের (ক্যামেরার লক্ষ্য) ফোকাল পয়েন্টের ল্যাট/এলএনজি কেন্দ্রের সীমানা সীমাবদ্ধ করতে চাইতে পারেন যাতে ব্যবহারকারীরা কেবল এই সীমানাগুলির মধ্যে স্ক্রোল করতে এবং প্যান করতে পারেন। উদাহরণস্বরূপ, কোনও শপিং সেন্টার বা বিমানবন্দরের জন্য একটি খুচরা অ্যাপ্লিকেশন মানচিত্রটিকে কোনও নির্দিষ্ট সীমানায় সীমাবদ্ধ করতে চাইতে পারে, যাতে ব্যবহারকারীদের সেই সীমানার মধ্যে স্ক্রোল করতে এবং প্যান করতে দেয়।

কোটলিন



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

      

,
প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

অ্যান্ড্রয়েডের জন্য মানচিত্রের মানচিত্রের মানচিত্রগুলি সহজ অঙ্গভঙ্গির সাথে কাত করা এবং ঘোরানো যেতে পারে, ব্যবহারকারীদের একটি ওরিয়েন্টেশন দিয়ে মানচিত্রটি সামঞ্জস্য করার ক্ষমতা দেয় যা তাদের জন্য অর্থবোধ করে। যে কোনও জুম স্তরে, আপনি মানচিত্রটি প্যান করতে পারেন, বা ভেক্টর-ভিত্তিক মানচিত্রের টাইলগুলির ছোট পদচিহ্নের জন্য খুব সামান্য বিলম্বের সাথে এর দৃষ্টিভঙ্গি পরিবর্তন করতে পারেন।

কোড নমুনা

গিটহাবের এপিডেমোস সংগ্রহস্থলে এমন একটি নমুনা অন্তর্ভুক্ত রয়েছে যা ক্যামেরার বৈশিষ্ট্যগুলি প্রদর্শন করে:

ভূমিকা

ওয়েবে গুগল মানচিত্রের মতো, অ্যান্ড্রয়েডের জন্য মানচিত্রগুলি এসডিকে আপনার ডিভাইসের স্ক্রিনে (একটি সমতল বিমান) মার্কেটর প্রক্ষেপণ ব্যবহার করে বিশ্বের পৃষ্ঠ (একটি গোলক) উপস্থাপন করে। পূর্ব এবং পশ্চিম দিকে, মানচিত্রটি অসীমভাবে পুনরাবৃত্তি করা হয় কারণ পৃথিবী নির্বিঘ্নে নিজের চারপাশে জড়িয়ে থাকে। উত্তর এবং দক্ষিণ দিকে মানচিত্রটি প্রায় 85 ডিগ্রি উত্তর এবং 85 ডিগ্রি দক্ষিণে সীমাবদ্ধ।

দ্রষ্টব্য: একটি মার্কেটর প্রক্ষেপণের একটি সীমাবদ্ধ প্রস্থ দ্রাঘিমাংশীয় তবে অসীম উচ্চতা অক্ষাংশীয়। ফলাফলের মানচিত্রের আকৃতি স্কোয়ারটি তৈরি করতে আমরা প্রায় +/- 85 ডিগ্রি পর্যন্ত মার্কেটর প্রজেকশনটি ব্যবহার করে বেস মানচিত্রের চিত্রগুলি "কেটে ফেলেছি", যা টাইল নির্বাচনের জন্য সহজ যুক্তি দেয়।

অ্যান্ড্রয়েডের জন্য মানচিত্র এসডিকে আপনাকে মানচিত্রের ক্যামেরাটি সংশোধন করে মানচিত্রের ব্যবহারকারীর দৃষ্টিভঙ্গি পরিবর্তন করতে দেয়।

ক্যামেরায় পরিবর্তনগুলি আপনি যুক্ত করেছেন মার্কার, ওভারলে বা অন্যান্য গ্রাফিকগুলিতে কোনও পরিবর্তন আনবে না, যদিও আপনি নতুন দৃশ্যের সাথে আরও ভাল ফিট করার জন্য আপনার সংযোজনগুলি পরিবর্তন করতে চাইতে পারেন।

যেহেতু আপনি মানচিত্রে ব্যবহারকারীর অঙ্গভঙ্গিগুলি শুনতে পারেন, আপনি ব্যবহারকারীর অনুরোধগুলির প্রতিক্রিয়া হিসাবে মানচিত্রটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, কলব্যাক পদ্ধতি OnMapClickListener.onMapClick() মানচিত্রে একটি একক ট্যাপের প্রতিক্রিয়া জানায়। যেহেতু পদ্ধতিটি ট্যাপের অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ গ্রহণ করে, আপনি প্যানিং বা জুম করে সেই বিন্দুতে প্রতিক্রিয়া জানাতে পারেন। মার্কার বুদ্বুদে ট্যাপগুলিতে সাড়া দেওয়ার জন্য বা কোনও চিহ্নিতকারীটিতে একটি টানা অঙ্গভঙ্গিতে সাড়া দেওয়ার জন্য অনুরূপ পদ্ধতিগুলি উপলব্ধ।

আপনি ক্যামেরার চলাচলগুলিও শুনতে পারেন, যাতে ক্যামেরা চলতে শুরু করে, বর্তমানে চলমান, বা চলমান বন্ধ হয়ে যায় তখন আপনার অ্যাপ্লিকেশনটি একটি বিজ্ঞপ্তি পায়। বিশদের জন্য, ক্যামেরা পরিবর্তনের ইভেন্টগুলির গাইড দেখুন।

ক্যামেরার অবস্থান

মানচিত্রের ভিউটি একটি সমতল বিমানের দিকে তাকিয়ে ক্যামেরা হিসাবে মডেল করা হয়েছে। ক্যামেরার অবস্থান (এবং সেইজন্য মানচিত্রের রেন্ডারিং) নিম্নলিখিত বৈশিষ্ট্যগুলি দ্বারা নির্দিষ্ট করা হয়েছে: লক্ষ্য (অক্ষাংশ/দ্রাঘিমাংশের অবস্থান) , ভারবহন , টিল্ট এবং জুম

ক্যামেরা বৈশিষ্ট্য ডায়াগ্রাম

লক্ষ্য (অবস্থান)

ক্যামেরার লক্ষ্যটি মানচিত্রের কেন্দ্রের অবস্থান, যা অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট করা হয়।

অক্ষাংশটি -85 এবং 85 ডিগ্রির মধ্যে থাকতে পারে, অন্তর্ভুক্ত। এই ব্যাপ্তির উপরে বা নীচে মানগুলি এই পরিসীমাটির মধ্যে নিকটতম মানটিতে ক্ল্যাম্প করা হবে। উদাহরণস্বরূপ, 100 এর একটি অক্ষাংশ নির্দিষ্ট করে মানটি 85 -এ সেট করবে। -180 এবং 180 ডিগ্রির মধ্যে দ্রাঘিমাংশের পরিসীমা অন্তর্ভুক্ত। এই পরিসীমা উপরে বা নীচে মানগুলি এমনভাবে আবৃত করা হবে যে তারা পরিসীমা (-180, 180) এর মধ্যে পড়ে। উদাহরণস্বরূপ, 480, 840 এবং 1200 সমস্তই 120 ডিগ্রিতে আবৃত হবে।

ভারবহন (ওরিয়েন্টেশন)

ক্যামেরা ভারবহনটি মানচিত্রের শীর্ষ প্রান্তের সাথে মিল রেখে সত্য উত্তর থেকে ডিগ্রিগুলিতে পরিমাপ করা কম্পাসের দিকটি নির্দিষ্ট করে। আপনি যদি মানচিত্রের কেন্দ্র থেকে মানচিত্রের শীর্ষ প্রান্তে একটি উল্লম্ব রেখা আঁকেন তবে ভারবহনটি সত্য উত্তরের তুলনায় ক্যামেরার শিরোনাম (ডিগ্রিগুলিতে পরিমাপ করা) এর সাথে মিলে যায়।

0 এর একটি ভারবহন মানে মানচিত্রের শীর্ষটি সত্য উত্তরে নির্দেশ করে। একটি ভারবহন মান 90 এর অর্থ পূর্ব পূর্ব (একটি কম্পাসে 90 ডিগ্রি) মানচিত্রের পয়েন্টগুলির শীর্ষ। একটি মান 180 এর অর্থ দক্ষিণে মানচিত্রের পয়েন্টগুলির শীর্ষ।

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

টিল্ট (দেখার কোণ)

টিল্টটি মানচিত্রের কেন্দ্রের অবস্থানের উপরে সরাসরি একটি চাপের উপরে ক্যামেরার অবস্থান নির্ধারণ করে, নাদির থেকে ডিগ্রিগুলিতে পরিমাপ করা হয় (দিকটি ক্যামেরার নীচে সরাসরি নির্দেশ করে)। 0 এর একটি মান সরাসরি নীচে নির্দেশিত ক্যামেরার সাথে মিলে যায়। 0 এর চেয়ে বেশি মানগুলি একটি ক্যামেরার সাথে মিলে যা নির্দিষ্ট ডিগ্রির নির্দিষ্ট সংখ্যার দ্বারা দিগন্তের দিকে চালিত হয়। আপনি যখন দেখার কোণটি পরিবর্তন করেন, মানচিত্রটি দৃষ্টিকোণে উপস্থিত হয়, দূর-দূরবর্তী বৈশিষ্ট্যগুলি আরও ছোট প্রদর্শিত হয় এবং কাছাকাছি বৈশিষ্ট্যগুলি আরও বড় প্রদর্শিত হয়। নিম্নলিখিত চিত্রগুলি এটি প্রদর্শন করে।

নীচের চিত্রগুলিতে, দেখার কোণটি 0 ডিগ্রি। প্রথম চিত্রটি এর একটি পরিকল্পনামূলক দেখায়; অবস্থান 1 হ'ল ক্যামেরার অবস্থান, এবং অবস্থান 2 হ'ল বর্তমান মানচিত্রের অবস্থান। ফলাফলের মানচিত্রটি নীচে দেখানো হয়েছে।

18 এর জুম স্তরে 0 ডিগ্রি দেখার কোণে অবস্থিত একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট।
মানচিত্রটি ক্যামেরার ডিফল্ট দেখার কোণ সহ প্রদর্শিত।
ডায়াগ্রাম যা ক্যামেরার ডিফল্ট অবস্থান দেখায়, সরাসরি মানচিত্রের অবস্থানের উপরে 0 ডিগ্রি কোণে।
ক্যামেরার ডিফল্ট দেখার কোণ।

নীচের চিত্রগুলিতে, দেখার কোণটি 45 ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি সোজা ওভারহেড (0 ডিগ্রি) এবং স্থল (90 ডিগ্রি) এর মধ্যে একটি চাপের সাথে অর্ধেক পথ ধরে 3 অবস্থানে রয়েছে। ক্যামেরাটি এখনও মানচিত্রের কেন্দ্রের পয়েন্টের দিকে ইশারা করছে, তবে 4 পজিশনে লাইন দ্বারা প্রতিনিধিত্ব করা অঞ্চলটি এখন দৃশ্যমান।

18 এর জুম স্তরে 45 ডিগ্রি দেখার কোণে অবস্থিত একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট।
মানচিত্রটি 45 ডিগ্রির একটি দেখার কোণ সহ প্রদর্শিত।
চিত্র যা ক্যামেরার দেখার কোণটি 45 ডিগ্রি সেট করে দেখায়, জুম স্তরটি এখনও 18 এ সেট করে।
45 ডিগ্রি একটি ক্যামেরা দেখার কোণ।

এই স্ক্রিনশটের মানচিত্রটি এখনও মূল মানচিত্রের মতো একই পয়েন্টে কেন্দ্রিক রয়েছে তবে মানচিত্রের শীর্ষে আরও বৈশিষ্ট্য উপস্থিত হয়েছে। আপনি 45 ডিগ্রি ছাড়িয়ে কোণটি বাড়ার সাথে সাথে ক্যামেরা এবং মানচিত্রের অবস্থানের মধ্যে বৈশিষ্ট্যগুলি আনুপাতিকভাবে বৃহত্তর প্রদর্শিত হয়, অন্যদিকে মানচিত্রের অবস্থানের বাইরে বৈশিষ্ট্যগুলি আনুপাতিকভাবে ছোট প্রদর্শিত হয়, ত্রি-মাত্রিক প্রভাব দেয়।

জুম

ক্যামেরার জুম স্তরটি মানচিত্রের স্কেল নির্ধারণ করে। বৃহত্তর জুম স্তরে আরও বিশদটি স্ক্রিনে দেখা যায়, যখন ছোট জুম স্তরে বিশ্বের আরও অনেক বেশি স্ক্রিনে দেখা যায়। জুম স্তর 0 এ, মানচিত্রের স্কেল এমন যে পুরো বিশ্বের প্রায় 256 ডিপি ( ঘনত্ব-স্বতন্ত্র পিক্সেল ) এর প্রস্থ রয়েছে।

1 দ্বারা জুম স্তর বৃদ্ধি করা পর্দার বিশ্বের প্রস্থকে দ্বিগুণ করে। সুতরাং জুম স্তর এন এ, বিশ্বের প্রস্থ প্রায় 256 * 2 এন ডিপি। উদাহরণস্বরূপ, জুম স্তর 2 এ, পুরো বিশ্ব প্রায় 1024 ডিপি প্রশস্ত।

জুম স্তরটি পূর্ণসংখ্যা হওয়ার দরকার নেই। মানচিত্র দ্বারা অনুমোদিত জুম স্তরের পরিসীমা লক্ষ্য, মানচিত্রের ধরণ এবং স্ক্রিনের আকার সহ বিভিন্ন কারণের উপর নির্ভর করে। পরিসরের বাইরে যে কোনও সংখ্যা পরবর্তী নিকটতম বৈধ মানতে রূপান্তরিত হবে, যা হয় ন্যূনতম জুম স্তর বা সর্বোচ্চ জুম স্তর হতে পারে। নিম্নলিখিত তালিকাটি প্রতিটি জুম স্তরে আপনি দেখতে আশা করতে পারেন তার আনুমানিক স্তরটি দেখায়:

  • 1: বিশ্ব
  • 5: ল্যান্ডমাস/মহাদেশ
  • 10: শহর
  • 15: রাস্তাগুলি
  • 20: বিল্ডিং
নিম্নলিখিত চিত্রগুলি বিভিন্ন জুম স্তরের ভিজ্যুয়াল উপস্থিতি দেখায়:
5 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 5 এ একটি মানচিত্র।
15 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 15 এ একটি মানচিত্র।
জুম স্তর 20 এ একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 20 এ একটি মানচিত্র।

ক্যামেরা সরানো

মানচিত্র এপিআই আপনাকে মানচিত্রে বিশ্বের কোন অংশটি দৃশ্যমান তা পরিবর্তন করতে দেয়। এটি ক্যামেরার অবস্থান পরিবর্তন করে (মানচিত্রটি সরানোর বিপরীতে) অর্জন করা হয়।

আপনি যখন ক্যামেরাটি পরিবর্তন করেন, আপনার কাছে ফলাফল ক্যামেরা চলাচল অ্যানিমেট করার বিকল্প রয়েছে। অ্যানিমেশনটি বর্তমান ক্যামেরা বৈশিষ্ট্য এবং নতুন ক্যামেরা বৈশিষ্ট্যের মধ্যে ইন্টারপোলেট করে। আপনি অ্যানিমেশনের সময়কালও নিয়ন্ত্রণ করতে পারেন।

ক্যামেরার অবস্থান পরিবর্তন করতে, আপনাকে অবশ্যই CameraUpdate ব্যবহার করে ক্যামেরাটি কোথায় সরাতে চান তা নির্দিষ্ট করতে হবে। মানচিত্র এপিআই আপনাকে 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);

      

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

ক্যামেরা অবস্থান পরিবর্তন করা

সাধারণ অবস্থানের পরিবর্তনের জন্য দুটি সুবিধার পদ্ধতি রয়েছে। CameraUpdateFactory.newLatLng(LatLng) আপনাকে এমন একটি CameraUpdate দেয় যা অন্যান্য সমস্ত বৈশিষ্ট্য সংরক্ষণ করার সময় ক্যামেরার অক্ষাংশ এবং দ্রাঘিমাংশকে পরিবর্তন করে। CameraUpdateFactory.newLatLngZoom(LatLng, float) আপনাকে একটি CameraUpdate দেয় যা অন্যান্য সমস্ত বৈশিষ্ট্য সংরক্ষণ করার সময় ক্যামেরার অক্ষাংশ, দ্রাঘিমাংশ এবং জুম পরিবর্তন করে।

ক্যামেরার অবস্থান পরিবর্তন করার ক্ষেত্রে সম্পূর্ণ নমনীয়তার জন্য, CameraUpdateFactory.newCameraPosition(CameraPosition) ব্যবহার করুন যা আপনাকে একটি CameraUpdate দেয় যা ক্যামেরাটিকে প্রদত্ত অবস্থানে নিয়ে যায়। new CameraPosition() new CameraPosition.Builder() করে বা একটি CameraPosition.Builder সহ সরাসরি একটি CameraPosition পাওয়া যায় new

প্যানিং (স্ক্রোলিং)

CameraUpdateFactory.scrollBy(float, float) আপনাকে একটি CameraUpdate দেয় যা ক্যামেরার অক্ষাংশ এবং দ্রাঘিমাংশকে পরিবর্তন করে যেমন মানচিত্রটি নির্দিষ্ট পিক্সেলের নির্দিষ্ট সংখ্যার দ্বারা চলে। একটি ইতিবাচক এক্স মান ক্যামেরাটি ডানদিকে চলে যায়, যাতে মানচিত্রটি বাম দিকে চলে গেছে বলে মনে হয়। একটি ইতিবাচক ওয়াই মান ক্যামেরাটি নীচে নেমে আসে, যাতে মানচিত্রটি উপরে উঠে যায় বলে মনে হয়। বিপরীতে, নেতিবাচক এক্স মানগুলি ক্যামেরাটি বাম দিকে চলে যায়, যাতে মানচিত্রটি ডান এবং নেতিবাচক y মানগুলি সরিয়ে নিয়ে যায় বলে মনে হয় ক্যামেরাটি উপরে উঠে যায়। স্ক্রোলিং ক্যামেরার বর্তমান ওরিয়েন্টেশনের সাথে সম্পর্কিত। উদাহরণস্বরূপ, যদি ক্যামেরাটির 90 ডিগ্রি ভারবহন থাকে তবে পূর্ব "আপ"।

সীমানা নির্ধারণ

মানচিত্রের সীমা নির্ধারণ

ক্যামেরাটিকে এমনভাবে সরিয়ে নেওয়া কখনও কখনও দরকারী যে আগ্রহের পুরো ক্ষেত্রটি সর্বাধিক সম্ভাব্য জুম স্তরে দৃশ্যমান। উদাহরণস্বরূপ, আপনি যদি ব্যবহারকারীর বর্তমান অবস্থানের পাঁচ মাইলের মধ্যে সমস্ত গ্যাস স্টেশন প্রদর্শন করছেন তবে আপনি ক্যামেরাটি এমনভাবে সরাতে চাইতে পারেন যাতে তারা সমস্ত স্ক্রিনে দৃশ্যমান। এটি করার জন্য, প্রথমে আপনি স্ক্রিনে দৃশ্যমান হতে চান এমন LatLngBounds গণনা করুন। তারপরে আপনি CameraUpdate পেতে CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) ব্যবহার করতে পারেন যা ক্যামেরার অবস্থানকে এমনভাবে পরিবর্তন করে যে প্রদত্ত 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 তৈরি করে এবং CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) ব্যবহার করে LatLngBounds সাথে ব্যবহার করতে পারেন। 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 ব্যবহার করতে পারেন, মানচিত্রটি লেআউট হওয়ার আগেই, কারণ এপিআই আপনি যে যুক্তিগুলি পাস করেছেন সেগুলি থেকে ডিসপ্লে সীমানা গণনা করে।

প্রদত্ত অঞ্চলে ব্যবহারকারীর প্যানিং সীমাবদ্ধ করা

উপরের পরিস্থিতিগুলিতে, আপনি মানচিত্রের সীমানা সেট করেছেন তবে ব্যবহারকারীরা এই সীমানার বাইরে স্ক্রোল করতে বা প্যান করতে পারেন। পরিবর্তে, আপনি মানচিত্রের (ক্যামেরার লক্ষ্য) ফোকাল পয়েন্টের ল্যাট/এলএনজি কেন্দ্রের সীমানা সীমাবদ্ধ করতে চাইতে পারেন যাতে ব্যবহারকারীরা কেবল এই সীমানাগুলির মধ্যে স্ক্রোল করতে এবং প্যান করতে পারেন। উদাহরণস্বরূপ, কোনও শপিং সেন্টার বা বিমানবন্দরের জন্য একটি খুচরা অ্যাপ্লিকেশন মানচিত্রটিকে কোনও নির্দিষ্ট সীমানায় সীমাবদ্ধ করতে চাইতে পারে, যাতে ব্যবহারকারীদের সেই সীমানার মধ্যে স্ক্রোল করতে এবং প্যান করতে দেয়।

কোটলিন



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

      

,
প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

অ্যান্ড্রয়েডের জন্য মানচিত্রের মানচিত্রের মানচিত্রগুলি সহজ অঙ্গভঙ্গির সাথে কাত করা এবং ঘোরানো যেতে পারে, ব্যবহারকারীদের একটি ওরিয়েন্টেশন দিয়ে মানচিত্রটি সামঞ্জস্য করার ক্ষমতা দেয় যা তাদের জন্য অর্থবোধ করে। যে কোনও জুম স্তরে, আপনি মানচিত্রটি প্যান করতে পারেন, বা ভেক্টর-ভিত্তিক মানচিত্রের টাইলগুলির ছোট পদচিহ্নের জন্য খুব সামান্য বিলম্বের সাথে এর দৃষ্টিভঙ্গি পরিবর্তন করতে পারেন।

কোড নমুনা

গিটহাবের এপিডেমোস সংগ্রহস্থলে এমন একটি নমুনা অন্তর্ভুক্ত রয়েছে যা ক্যামেরার বৈশিষ্ট্যগুলি প্রদর্শন করে:

ভূমিকা

ওয়েবে গুগল মানচিত্রের মতো, অ্যান্ড্রয়েডের জন্য মানচিত্রগুলি এসডিকে আপনার ডিভাইসের স্ক্রিনে (একটি সমতল বিমান) মার্কেটর প্রক্ষেপণ ব্যবহার করে বিশ্বের পৃষ্ঠ (একটি গোলক) উপস্থাপন করে। পূর্ব এবং পশ্চিম দিকে, মানচিত্রটি অসীমভাবে পুনরাবৃত্তি করা হয় কারণ পৃথিবী নির্বিঘ্নে নিজের চারপাশে জড়িয়ে থাকে। উত্তর এবং দক্ষিণ দিকে মানচিত্রটি প্রায় 85 ডিগ্রি উত্তর এবং 85 ডিগ্রি দক্ষিণে সীমাবদ্ধ।

দ্রষ্টব্য: একটি মার্কেটর প্রক্ষেপণের একটি সীমাবদ্ধ প্রস্থ দ্রাঘিমাংশীয় তবে অসীম উচ্চতা অক্ষাংশীয়। ফলাফলের মানচিত্রের আকৃতি স্কোয়ারটি তৈরি করতে আমরা প্রায় +/- 85 ডিগ্রি পর্যন্ত মার্কেটর প্রজেকশনটি ব্যবহার করে বেস মানচিত্রের চিত্রগুলি "কেটে ফেলেছি", যা টাইল নির্বাচনের জন্য সহজ যুক্তি দেয়।

অ্যান্ড্রয়েডের জন্য মানচিত্র এসডিকে আপনাকে মানচিত্রের ক্যামেরাটি সংশোধন করে মানচিত্রের ব্যবহারকারীর দৃষ্টিভঙ্গি পরিবর্তন করতে দেয়।

ক্যামেরায় পরিবর্তনগুলি আপনি যুক্ত করেছেন মার্কার, ওভারলে বা অন্যান্য গ্রাফিকগুলিতে কোনও পরিবর্তন আনবে না, যদিও আপনি নতুন দৃশ্যের সাথে আরও ভাল ফিট করার জন্য আপনার সংযোজনগুলি পরিবর্তন করতে চাইতে পারেন।

যেহেতু আপনি মানচিত্রে ব্যবহারকারীর অঙ্গভঙ্গিগুলি শুনতে পারেন, আপনি ব্যবহারকারীর অনুরোধগুলির প্রতিক্রিয়া হিসাবে মানচিত্রটি পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, কলব্যাক পদ্ধতি OnMapClickListener.onMapClick() মানচিত্রে একটি একক ট্যাপের প্রতিক্রিয়া জানায়। যেহেতু পদ্ধতিটি ট্যাপের অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ গ্রহণ করে, আপনি প্যানিং বা জুম করে সেই বিন্দুতে প্রতিক্রিয়া জানাতে পারেন। মার্কার বুদ্বুদে ট্যাপগুলিতে সাড়া দেওয়ার জন্য বা কোনও চিহ্নিতকারীটিতে একটি টানা অঙ্গভঙ্গিতে সাড়া দেওয়ার জন্য অনুরূপ পদ্ধতিগুলি উপলব্ধ।

আপনি ক্যামেরার চলাচলগুলিও শুনতে পারেন, যাতে ক্যামেরা চলতে শুরু করে, বর্তমানে চলমান, বা চলমান বন্ধ হয়ে যায় তখন আপনার অ্যাপ্লিকেশনটি একটি বিজ্ঞপ্তি পায়। বিশদের জন্য, ক্যামেরা পরিবর্তনের ইভেন্টগুলির গাইড দেখুন।

ক্যামেরার অবস্থান

মানচিত্রের ভিউটি একটি সমতল বিমানের দিকে তাকিয়ে ক্যামেরা হিসাবে মডেল করা হয়েছে। ক্যামেরার অবস্থান (এবং সেইজন্য মানচিত্রের রেন্ডারিং) নিম্নলিখিত বৈশিষ্ট্যগুলি দ্বারা নির্দিষ্ট করা হয়েছে: লক্ষ্য (অক্ষাংশ/দ্রাঘিমাংশের অবস্থান) , ভারবহন , টিল্ট এবং জুম

ক্যামেরা বৈশিষ্ট্য ডায়াগ্রাম

লক্ষ্য (অবস্থান)

ক্যামেরার লক্ষ্যটি মানচিত্রের কেন্দ্রের অবস্থান, যা অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট করা হয়।

অক্ষাংশটি -85 এবং 85 ডিগ্রির মধ্যে থাকতে পারে, অন্তর্ভুক্ত। এই ব্যাপ্তির উপরে বা নীচে মানগুলি এই পরিসীমাটির মধ্যে নিকটতম মানটিতে ক্ল্যাম্প করা হবে। উদাহরণস্বরূপ, 100 এর একটি অক্ষাংশ নির্দিষ্ট করে মানটি 85 -এ সেট করবে। -180 এবং 180 ডিগ্রির মধ্যে দ্রাঘিমাংশের পরিসীমা অন্তর্ভুক্ত। এই পরিসীমা উপরে বা নীচে মানগুলি এমনভাবে আবৃত করা হবে যে তারা পরিসীমা (-180, 180) এর মধ্যে পড়ে। উদাহরণস্বরূপ, 480, 840 এবং 1200 সমস্তই 120 ডিগ্রিতে আবৃত হবে।

ভারবহন (ওরিয়েন্টেশন)

ক্যামেরা ভারবহনটি মানচিত্রের শীর্ষ প্রান্তের সাথে মিল রেখে সত্য উত্তর থেকে ডিগ্রিগুলিতে পরিমাপ করা কম্পাসের দিকটি নির্দিষ্ট করে। আপনি যদি মানচিত্রের কেন্দ্র থেকে মানচিত্রের শীর্ষ প্রান্তে একটি উল্লম্ব রেখা আঁকেন তবে ভারবহনটি সত্য উত্তরের তুলনায় ক্যামেরার শিরোনাম (ডিগ্রিগুলিতে পরিমাপ করা) এর সাথে মিলে যায়।

0 এর একটি ভারবহন মানে মানচিত্রের শীর্ষটি সত্য উত্তরে নির্দেশ করে। একটি ভারবহন মান 90 এর অর্থ পূর্ব পূর্ব (একটি কম্পাসে 90 ডিগ্রি) মানচিত্রের পয়েন্টগুলির শীর্ষ। একটি মান 180 এর অর্থ দক্ষিণে মানচিত্রের পয়েন্টগুলির শীর্ষ।

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

টিল্ট (দেখার কোণ)

টিল্টটি মানচিত্রের কেন্দ্রের অবস্থানের উপরে সরাসরি একটি চাপের উপর ক্যামেরার অবস্থান নির্ধারণ করে, নাদির থেকে ডিগ্রিগুলিতে পরিমাপ করা হয় (দিকটি ক্যামেরার নীচে সরাসরি নির্দেশ করে)। 0 এর একটি মান সরাসরি নীচে নির্দেশিত ক্যামেরার সাথে মিলে যায়। 0 এর চেয়ে বেশি মানগুলি একটি ক্যামেরার সাথে মিলে যা নির্দিষ্ট ডিগ্রির নির্দিষ্ট সংখ্যার দ্বারা দিগন্তের দিকে চালিত হয়। আপনি যখন দেখার কোণটি পরিবর্তন করেন, মানচিত্রটি দৃষ্টিকোণে উপস্থিত হয়, দূর-দূরবর্তী বৈশিষ্ট্যগুলি আরও ছোট প্রদর্শিত হয় এবং কাছাকাছি বৈশিষ্ট্যগুলি আরও বড় প্রদর্শিত হয়। নিম্নলিখিত চিত্রগুলি এটি প্রদর্শন করে।

নীচের চিত্রগুলিতে, দেখার কোণটি 0 ডিগ্রি। প্রথম চিত্রটি এর একটি পরিকল্পনামূলক দেখায়; অবস্থান 1 হ'ল ক্যামেরার অবস্থান, এবং অবস্থান 2 হ'ল বর্তমান মানচিত্রের অবস্থান। ফলাফলের মানচিত্রটি নীচে দেখানো হয়েছে।

18 এর জুম স্তরে 0 ডিগ্রি দেখার কোণে অবস্থিত একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট।
মানচিত্রটি ক্যামেরার ডিফল্ট দেখার কোণ সহ প্রদর্শিত।
ডায়াগ্রাম যা ক্যামেরার ডিফল্ট অবস্থান দেখায়, সরাসরি মানচিত্রের অবস্থানের উপরে 0 ডিগ্রি কোণে।
ক্যামেরার ডিফল্ট দেখার কোণ।

নীচের চিত্রগুলিতে, দেখার কোণটি 45 ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি সোজা ওভারহেড (0 ডিগ্রি) এবং স্থল (90 ডিগ্রি) এর মধ্যে একটি চাপের সাথে অর্ধেক পথ ধরে 3 অবস্থানে রয়েছে। ক্যামেরাটি এখনও মানচিত্রের কেন্দ্রের পয়েন্টের দিকে ইশারা করছে, তবে 4 পজিশনে লাইন দ্বারা প্রতিনিধিত্ব করা অঞ্চলটি এখন দৃশ্যমান।

18 এর জুম স্তরে 45 ডিগ্রি দেখার কোণে অবস্থিত একটি ক্যামেরা সহ একটি মানচিত্রের স্ক্রিনশট।
মানচিত্রটি 45 ডিগ্রির একটি দেখার কোণ সহ প্রদর্শিত।
চিত্র যা ক্যামেরার দেখার কোণটি 45 ডিগ্রি সেট করে দেখায়, জুম স্তরটি এখনও 18 এ সেট করে।
45 ডিগ্রি একটি ক্যামেরা দেখার কোণ।

এই স্ক্রিনশটের মানচিত্রটি এখনও মূল মানচিত্রের মতো একই পয়েন্টে কেন্দ্রিক রয়েছে তবে মানচিত্রের শীর্ষে আরও বৈশিষ্ট্য উপস্থিত হয়েছে। আপনি 45 ডিগ্রি ছাড়িয়ে কোণটি বাড়ার সাথে সাথে ক্যামেরা এবং মানচিত্রের অবস্থানের মধ্যে বৈশিষ্ট্যগুলি আনুপাতিকভাবে বৃহত্তর প্রদর্শিত হয়, অন্যদিকে মানচিত্রের অবস্থানের বাইরে বৈশিষ্ট্যগুলি আনুপাতিকভাবে ছোট প্রদর্শিত হয়, ত্রি-মাত্রিক প্রভাব দেয়।

জুম

ক্যামেরার জুম স্তরটি মানচিত্রের স্কেল নির্ধারণ করে। বৃহত্তর জুম স্তরে আরও বিশদটি স্ক্রিনে দেখা যায়, যখন ছোট জুম স্তরে বিশ্বের আরও অনেক বেশি স্ক্রিনে দেখা যায়। জুম স্তর 0 এ, মানচিত্রের স্কেল এমন যে পুরো বিশ্বের প্রায় 256 ডিপি ( ঘনত্ব-স্বতন্ত্র পিক্সেল ) এর প্রস্থ রয়েছে।

1 দ্বারা জুম স্তর বৃদ্ধি করা পর্দার বিশ্বের প্রস্থকে দ্বিগুণ করে। সুতরাং জুম স্তর এন এ, বিশ্বের প্রস্থ প্রায় 256 * 2 এন ডিপি। উদাহরণস্বরূপ, জুম স্তর 2 এ, পুরো বিশ্ব প্রায় 1024 ডিপি প্রশস্ত।

জুম স্তরটি পূর্ণসংখ্যা হওয়ার দরকার নেই। মানচিত্র দ্বারা অনুমোদিত জুম স্তরের পরিসীমা লক্ষ্য, মানচিত্রের ধরণ এবং স্ক্রিনের আকার সহ বিভিন্ন কারণের উপর নির্ভর করে। পরিসরের বাইরে যে কোনও সংখ্যা পরবর্তী নিকটতম বৈধ মানতে রূপান্তরিত হবে, যা হয় ন্যূনতম জুম স্তর বা সর্বোচ্চ জুম স্তর হতে পারে। নিম্নলিখিত তালিকাটি প্রতিটি জুম স্তরে আপনি দেখতে আশা করতে পারেন তার আনুমানিক স্তরটি দেখায়:

  • 1: বিশ্ব
  • 5: ল্যান্ডমাস/মহাদেশ
  • 10: শহর
  • 15: রাস্তাগুলি
  • 20: বিল্ডিং
নিম্নলিখিত চিত্রগুলি বিভিন্ন জুম স্তরের ভিজ্যুয়াল উপস্থিতি দেখায়:
5 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 5 এ একটি মানচিত্র।
15 এর জুম স্তরে একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 15 এ একটি মানচিত্র।
জুম স্তর 20 এ একটি মানচিত্রের স্ক্রিনশট
জুম স্তর 20 এ একটি মানচিত্র।

ক্যামেরা সরানো

মানচিত্র এপিআই আপনাকে মানচিত্রে বিশ্বের কোন অংশটি দৃশ্যমান তা পরিবর্তন করতে দেয়। এটি ক্যামেরার অবস্থান পরিবর্তন করে (মানচিত্রটি সরানোর বিপরীতে) অর্জন করা হয়।

আপনি যখন ক্যামেরাটি পরিবর্তন করেন, আপনার কাছে ফলাফল ক্যামেরা চলাচল অ্যানিমেট করার বিকল্প রয়েছে। অ্যানিমেশনটি বর্তমান ক্যামেরা বৈশিষ্ট্য এবং নতুন ক্যামেরা বৈশিষ্ট্যের মধ্যে ইন্টারপোলেট করে। আপনি অ্যানিমেশনের সময়কালও নিয়ন্ত্রণ করতে পারেন।

ক্যামেরার অবস্থান পরিবর্তন করতে, আপনাকে অবশ্যই CameraUpdate ব্যবহার করে ক্যামেরাটি কোথায় সরাতে চান তা নির্দিষ্ট করতে হবে। মানচিত্র এপিআই আপনাকে 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);

      

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

ক্যামেরা অবস্থান পরিবর্তন করা

সাধারণ অবস্থানের পরিবর্তনের জন্য দুটি সুবিধার পদ্ধতি রয়েছে। CameraUpdateFactory.newLatLng(LatLng) আপনাকে এমন একটি CameraUpdate দেয় যা অন্যান্য সমস্ত বৈশিষ্ট্য সংরক্ষণ করার সময় ক্যামেরার অক্ষাংশ এবং দ্রাঘিমাংশকে পরিবর্তন করে। CameraUpdateFactory.newLatLngZoom(LatLng, float) আপনাকে একটি CameraUpdate দেয় যা অন্যান্য সমস্ত বৈশিষ্ট্য সংরক্ষণ করার সময় ক্যামেরার অক্ষাংশ, দ্রাঘিমাংশ এবং জুম পরিবর্তন করে।

ক্যামেরার অবস্থান পরিবর্তন করার ক্ষেত্রে সম্পূর্ণ নমনীয়তার জন্য, CameraUpdateFactory.newCameraPosition(CameraPosition) ব্যবহার করুন যা আপনাকে একটি CameraUpdate দেয় যা ক্যামেরাটিকে প্রদত্ত অবস্থানে নিয়ে যায়। new CameraPosition() new CameraPosition.Builder() করে বা একটি CameraPosition.Builder সহ সরাসরি একটি CameraPosition পাওয়া যায় new

প্যানিং (স্ক্রোলিং)

CameraUpdateFactory.scrollBy(float, float) আপনাকে একটি CameraUpdate দেয় যা ক্যামেরার অক্ষাংশ এবং দ্রাঘিমাংশকে পরিবর্তন করে যেমন মানচিত্রটি নির্দিষ্ট পিক্সেলের নির্দিষ্ট সংখ্যার দ্বারা চলে। একটি ইতিবাচক এক্স মান ক্যামেরাটি ডানদিকে চলে যায়, যাতে মানচিত্রটি বাম দিকে চলে গেছে বলে মনে হয়। একটি ইতিবাচক ওয়াই মান ক্যামেরাটি নীচে নেমে আসে, যাতে মানচিত্রটি উপরে উঠে যায় বলে মনে হয়। Conversely, negative x values cause the camera to move to the left, so that the map appears to have moved right and negative y values cause the camera to move up. The scrolling is relative to the camera's current orientation. For example, if the camera has a bearing of 90 degrees, then east is "up".

সীমানা নির্ধারণ

Setting the bounds of the map

It's sometimes useful to move the camera such that an entire area of interest is visible at the greatest possible zoom level. For example, if you're displaying all of the gas stations within five miles of the user's current position, you may want to move the camera such that they are all visible on the screen. To do this, first calculate the LatLngBounds that you want to be visible on the screen. You can then use CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) to obtain a CameraUpdate that changes the camera position such that the given LatLngBounds fits entirely within the map, taking into account the padding (in pixels) specified. The returned CameraUpdate ensures that the gap (in pixels) between the given bounds and the edge of the map will be at least as much as the specified padding. Note that the tilt and bearing of the map will both be 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));

      

Centering the map within an area

In some cases, you may wish to center your camera within a bounds instead of including the extreme borders. For example, to center the camera on a country while maintaining a constant zoom. In this case, you can use a similar method, by creating a LatLngBounds and using CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) with the LatLngBounds . getCenter() method. The getCenter() method will return the geographic center of the 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));

      

An overload of the method, newLatLngBounds(boundary, width, height, padding) allows you to specify a width and height in pixels for a rectangle, with the intention that these correspond to the dimensions of the map. The rectangle is positioned such that its center is the same as that of the map's view (so that if the dimensions specified are the same as those of the map's view, then the rectangle coincides with the map's view). The returned CameraUpdate will move the camera such that the specified LatLngBounds are centered on screen within the given rectangle at the greatest possible zoom level, taking into account the padding required.

Note: Only use the simpler method newLatLngBounds(boundary, padding) to generate a CameraUpdate if it is going to be used to move the camera after the map has undergone layout. During layout, the API calculates the display boundaries of the map which are needed to correctly project the bounding box. In comparison, you can use the CameraUpdate returned by the more complex method newLatLngBounds(boundary, width, height, padding) at any time, even before the map has undergone layout, because the API calculates the display boundaries from the arguments that you pass.

Restricting the user's panning to a given area

In the above scenarios, you set the bounds of the map but the user can then scroll or pan outside of these bounds. Instead, you may want to constrain the lat/lng centre bounds of the focal point of the map (the camera target) so that users can only scroll and pan within these bounds. For example, a retail app for a shopping centre or airport may want to constrain the map to a particular bounds, allowing users to scroll and pan within those bounds.

কোটলিন



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

      

The following diagram illustrates a scenario when the camera target is constrained to an area that is slightly larger than the viewport. The user can scroll and pan, provided the camera target remains within the bounded area. The cross represents the camera target:

Diagram showing a camera LatLngBounds that is larger than the
      viewport.

The map always fills the viewport, even if that results in the viewport showing areas that are outside the defined bounds. For example, if you position the camera target at a corner of the bounded area, the area beyond the corner is visible in the viewport but users cannot scroll further into that area. The following diagram illustrates this scenario. The cross represents the camera target:

Diagram showing the camera target positioned at bottom right corner of
      the camera LatLngBounds.

In the following diagram, the camera target has a very restricted bounds, offering the user very little opportunity to scroll or pan the map. The cross represents the camera target:

Diagram showing a camera LatLngBounds that is smaller than the
      viewport.

Updating the camera view

To apply a CameraUpdate to the map, you can either move the camera instantly or animate the camera smoothly. To move the camera instantly with the given CameraUpdate , you can call GoogleMap.moveCamera(CameraUpdate) .

You can make the user experience more pleasing, especially for short moves, by animating the change. To do this instead of calling GoogleMap.moveCamera call GoogleMap.animateCamera . The map will move smoothly to the new attributes. The most detailed form of this method, GoogleMap.animateCamera(cameraUpdate, duration, callback) , offers three arguments:

cameraUpdate
The CameraUpdate describing where to move the camera.
callback
An object that implements GoogleMap.CancellableCallback . This generalized interface for handling tasks defines two methods `onCancel()` and `onFinished()`. For animation, the methods are called in the following circumstances:
onFinish()
Invoked if the animation goes to completion without interruption.
onCancel()

Invoked if the animation is interrupted by calling stopAnimation() or starting a new camera movement.

Alternatively, this can also occur if you call GoogleMap.stopAnimation() .

duration
Desired duration of the animation, in milliseconds, as an int .

The following code snippets illustrate some of the common ways to move the camera.

কোটলিন



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