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

প্ল্যাটফর্ম বেছে নিন: Android iOS JavaScript

iOS-এর জন্য Maps SDK-এর মাধ্যমে, আপনি ম্যাপের ক্যামেরা পরিবর্তন করে ম্যাপে ব্যবহারকারীর ভিউপয়েন্ট পরিবর্তন করতে পারবেন।

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

ক্যামেরায় পরিবর্তন করলে, আপনার যোগ করা মার্কার, পলিলাইন বা অন্যান্য গ্রাফিক্সে কোনও পরিবর্তন হয় না, তবে নতুন ভিউয়ের সাথে আরও ভালোভাবে মানানসই করার জন্য আপনি এইসব সংযোজনে পরিবর্তন করতে চাইতে পারেন।

ম্যাপের ভিউ

iOS-এর জন্য Maps SDK, মার্কেটর প্রোজেকশন ব্যবহার করে আপনার ডিভাইসের স্ক্রিনে (একটি সমতল তল) পৃথিবীর পৃষ্ঠ (একটি গোলক) দেখায়।

ক্যামেরার পজিশন

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

ক্যামেরা প্রপার্টি ডায়াগ্রাম

টার্গেট (লোকেশন)

ক্যামেরা টার্গেট হল ম্যাপের কেন্দ্রের লোকেশন, যা অক্ষাংশ ও দ্রাঘিমাংশ কোঅর্ডিনেট হিসেবে নির্দিষ্ট করা থাকে।

অক্ষাংশ -৮৫ থেকে ৮৫ ডিগ্রির মধ্যে হতে পারে। এই রেঞ্জের উপরে বা নিচে থাকা ভ্যালু এই রেঞ্জের মধ্যে থাকা সবচেয়ে কাছের ভ্যালুর সাথে ক্ল্যাম্প করা হবে। যেমন, ১০০ অক্ষাংশ উল্লেখ করলে ভ্যালু ৮৫ হিসেবে সেট হবে। দ্রাঘিমাংশ -১৮০ থেকে ১৮০ ডিগ্রির মধ্যে হয়। এই রেঞ্জের উপরে বা নিচের ভ্যালু এমনভাবে র‍্যাপ করা হবে যাতে সেগুলি (-১৮০, ১৮০) রেঞ্জের মধ্যে পড়ে। যেমন, ৪৮০, ৮৪০ এবং ১২০০ সবই ১২০ ডিগ্রিতে র‍্যাপ করা হবে।

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

ক্যামেরা বিয়ারিং কম্পাসের দিক নির্দেশ করে, যা ম্যাপের উপরের প্রান্তের সাথে সামঞ্জস্য রেখে প্রকৃত উত্তর দিক থেকে ডিগ্রিতে পরিমাপ করা হয়। আপনি যদি ম্যাপের কেন্দ্র থেকে ম্যাপের উপরের প্রান্ত পর্যন্ত একটি উল্লম্ব রেখা আঁকেন, তাহলে বিয়ারিংটি প্রকৃত উত্তরের সাপেক্ষে ক্যামেরার হেডিংয়ের (ডিগ্রিতে পরিমাপ করা) সাথে সম্পর্কিত।

০ বিয়ারিংয়ের অর্থ হল ম্যাপের উপরের অংশটি প্রকৃত উত্তর দিক নির্দেশ করে। বেয়ারিং ভ্যালু ৯০ মানে ম্যাপের উপরের অংশ পূর্ব দিকে (কম্পাসে ৯০ ডিগ্রি) নির্দেশ করছে। ১৮০ ভ্যালু মানে ম্যাপের উপরের দিকটি দক্ষিণ দিকে নির্দেশ করে।

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

টিল্ট (ভিউয়িং অ্যাঙ্গেল)

টিল্ট, ম্যাপের কেন্দ্রবিন্দুর ঠিক উপরে একটি আর্কের উপর ক্যামেরার অবস্থানকে সংজ্ঞায়িত করে, যা নাদির (ক্যামেরার ঠিক নিচে নির্দেশ করা দিক) থেকে ডিগ্রিতে পরিমাপ করা হয়। ০ ভ্যালু থাকলে বুঝতে হবে যে ক্যামেরা সরাসরি নিচের দিকে তাক করা আছে। ০-এর থেকে বেশি মান থাকলে বুঝতে হবে যে ক্যামেরাটি দিগন্তের দিকে নির্দিষ্ট ডিগ্রি কোণে ঝুঁকে আছে। আপনি দেখার অ্যাঙ্গেল পরিবর্তন করলে, ম্যাপটি পার্সপেক্টিভে দেখা যায়, যেখানে দূরের ফিচারগুলি ছোট এবং কাছের ফিচারগুলি বড় দেখায়। নিম্নলিখিত ছবিতে এটি দেখানো হয়েছে।

নিচের ছবিতে, দেখার অ্যাঙ্গেল হল ০ ডিগ্রি। প্রথম ছবিতে এর একটি রেখাচিত্র দেখানো হয়েছে; ১ হল ক্যামেরার পজিশন এবং ২ হল বর্তমান ম্যাপের পজিশন। এর নিচে ম্যাপের ফলাফল দেখানো হয়েছে।

ম্যাপের স্ক্রিনশট যেখানে ক্যামেরা ০ ডিগ্রি ভিউয়িং অ্যাঙ্গেলে এবং ১৮ জুম লেভেলে সেট করা আছে।
ক্যামেরার ডিফল্ট ভিউয়িং অ্যাঙ্গেল সহ ম্যাপ দেখানো হয়েছে।
ডায়াগ্রাম যা ক্যামেরার ডিফল্ট পজিশন দেখায়, সরাসরি ম্যাপ পজিশনের উপরে, ০ ডিগ্রি কোণে।
ক্যামেরার ডিফল্ট ভিউয়িং অ্যাঙ্গেল।

নিচের ছবিতে, দেখার অ্যাঙ্গেল হল ৪৫ ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি মাথার ঠিক উপরে (০ ডিগ্রি) এবং মাটি (৯০ ডিগ্রি)-র মধ্যে একটি বৃত্তচাপের অর্ধেক পথ অতিক্রম করে, ৩ পজিশনে আসে। ক্যামেরা এখনও ম্যাপের কেন্দ্রবিন্দুতে ফোকাস করে আছে, তবে 4 পজিশনে লাইন দ্বারা দেখানো এলাকাটি এখন দেখা যাচ্ছে।

৪৫ ডিগ্রি ভিউয়িং অ্যাঙ্গেলে এবং ১৮ জুম লেভেলে ক্যামেরা পজিশন করা আছে এমন একটি ম্যাপের স্ক্রিনশট।
৪৫ ডিগ্রি ভিউয়িং অ্যাঙ্গেল সহ ম্যাপ দেখানো হয়েছে।
ডায়াগ্রাম যা দেখায় যে ক্যামেরার ভিউইং অ্যাঙ্গেল ৪৫ ডিগ্রিতে সেট করা আছে, জুম লেভেল এখনও ১৮-এ সেট করা আছে।
ক্যামেরা দেখার ৪৫ ডিগ্রি কোণ।

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

জুম করুন

ক্যামেরার জুম লেভেল ম্যাপের স্কেল নির্ধারণ করে। জুম লেভেল বেশি হলে স্ক্রিনে আরও বেশি বিবরণ দেখা যায়, আবার জুম লেভেল কম হলে স্ক্রিনে পৃথিবীর আরও বেশি অংশ দেখা যায়। জুম লেভেল ০-তে, ম্যাপের স্কেল এমন হয় যে সমগ্র বিশ্বের প্রস্থ প্রায় ২৫৬ পয়েন্ট হয়।

জুম লেভেল ১ বাড়ালে স্ক্রিনে পৃথিবীর প্রস্থ দ্বিগুণ হয়ে যায়। তাই জুম লেভেল N-এ, পৃথিবীর প্রস্থ হল আনুমানিক ২৫৬ * ২N পয়েন্ট। যেমন, জুম লেভেল ২-এ, পুরো পৃথিবী আনুমানিক ১০২৪ পয়েন্ট চওড়া।

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

  • ১: বিশ্ব
  • ৫: স্থলভাগ/মহাদেশ
  • ১০: শহর
  • ১৫: রাস্তা
  • ২০: বিল্ডিং
নিচের ছবিগুলি থেকে বিভিন্ন জুম লেভেলের ভিজ্যুয়াল অ্যাপিয়ারেন্স সম্পর্কে ধারণা পাওয়া যাবে:
৫ জুম লেভেলে ম্যাপের স্ক্রিনশট
জুম লেভেল ৫-এ একটি ম্যাপ।
১৫ জুম লেভেলে ম্যাপের স্ক্রিনশট
জুম লেভেল ১৫-এ একটি ম্যাপ।
২০ জুম লেভেলে ম্যাপের স্ক্রিনশট
জুম লেভেল ২০-এ একটি ম্যাপ।

ক্যামেরার প্রাথমিক পজিশন সেট করুন

GMSCameraPosition অবজেক্ট ব্যবহার করে ক্যামেরার প্রাথমিক পজিশন সেট করুন, যা আপনাকে বিয়ারিং, টিল্ট ও জুমের সাথে টার্গেটের অক্ষাংশ ও দ্রাঘিমাংশ সেট করতে দেয়।

ক্যামেরার প্রাথমিক পজিশন সেট করতে, একটি GMSMapViewOptions অবজেক্ট তৈরি করুন এবং camera প্রপার্টিকে GMSCameraPosition-এ সেট করুন। তারপর আপনার বিকল্পগুলি GMSMapView কনভেনিয়েন্স কনস্ট্রাক্টরে পাস করুন।

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 16)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

এছাড়াও, আপনি ডিফল্ট UIView init পদ্ধতি ব্যবহার করে GMSMapView অবজেক্ট তৈরি করতে পারবেন। এই ক্ষেত্রে, ক্যামেরার পজিশন ডিফল্ট লোকেশন থেকে শুরু হয় এবং আপনি তৈরি করার পরে এটি পরিবর্তন করেন।

Swift

let options = GMSMapViewOptions()
options.frame = self.view.bounds
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.frame = self.view.bounds;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

ক্যামেরার পজিশন পরিবর্তন করুন

আপনি লোকেশন, বিয়ারিং, টিল্ট ও জুম সেট করার জন্য প্রোগ্রাম্যাটিক্যালি ক্যামেরার পজিশন পরিবর্তন করতে পারবেন। GMSMapView-এ ক্যামেরার পজিশন পরিবর্তন করার জন্য বিভিন্ন পদ্ধতি থাকলেও, আপনি সাধারণত GMSCameraPosition বা GMSCameraUpdate ব্যবহার করেন:

  • GMSCameraPosition -এ এমন প্রপার্টি ও পদ্ধতি আছে যা আপনি প্রতিটি ক্যামেরার পজিশন প্যারামিটার পরিবর্তন করতে ব্যবহার করেন: টার্গেট, বিয়ারিং, টিল্ট ও জুম।

  • GMSCameraUpdate আপনাকে টার্গেট, বিয়ারিং, টিল্ট ও জুম পরিবর্তন করতে দেয় এবং স্ক্রলিং, উন্নত জুম, পূর্বনির্ধারিত সীমানার মধ্যে ক্যামেরা সেন্টারিং ও আরও অনেক কিছুতে সহায়তা করার জন্য অতিরিক্ত সুবিধাজনক পদ্ধতিও এতে অন্তর্ভুক্ত থাকে।

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

অ্যানিমেশনটি বর্তমান ক্যামেরা অ্যাট্রিবিউট এবং নতুন ক্যামেরা অ্যাট্রিবিউটের মধ্যে ইন্টারপোলেট করে। Core Animation ব্যবহার করে আপনি অ্যানিমেশনের সময়সীমা নিয়ন্ত্রণ করতে পারবেন।

GMSCameraPosition ব্যবহার করুন

GMSCameraPosition-এর মাধ্যমে ক্যামেরা পরিবর্তন করতে, আপনি একটি নতুন অবজেক্ট তৈরি করেন বা আগে থেকে থাকা কোনও অবজেক্ট কপি করেন এবং তারপরে এটি GMSMapView অবজেক্টে সেট করেন। অ্যানিমেশন সহ বা ছাড়া নতুন লোকেশনে ক্যামেরা স্ন্যাপ করতে GMSCameraPosition অবজেক্ট ব্যবহার করুন।

GMSCameraPosition অবজেক্ট ব্যবহার করে ক্যামেরার যেকোনও প্রপার্টি কনফিগার করুন, যেমন অক্ষাংশ, দ্রাঘিমাংশ, জুম, বিয়ারিং ও দেখার অ্যাঙ্গেল। তারপর আপনি সেই অবজেক্ট ব্যবহার করে GMSMapView-এর camera প্রপার্টি সেট করেন।

Swift

let fancy = GMSCameraPosition(
  latitude: -33,
  longitude: 151,
  zoom: 6,
  bearing: 270,
  viewingAngle: 45
)
mapView.camera = fancy
      

Objective-C

GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                       longitude:151.2086
                                                            zoom:6
                                                         bearing:30
                                                    viewingAngle:45];
[mapView setCamera:fancy];
      

আপনি ডিফল্ট ভ্যালুতে সেট করতে চান এমন যেকোনও GMSCameraPosition প্রপার্টি বাদ দিন।

মুভ অ্যানিমেট করতে, camera প্রপার্টি সেট করার পরিবর্তে animateToCameraPosition: পদ্ধতি ব্যবহার করুন।

GMSCameraUpdate ব্যবহার করুন

GMSCameraUpdate আপনাকে ক্যামেরার পজিশন আপডেট করতে এবং সেই নতুন পজিশনে স্ন্যাপ-টু নাকি অ্যানিমেট-টু করবেন তা বেছে নিতে দেয়। GMSCameraUpdate-এর সুবিধা হল এটি ব্যবহার করা সহজ। আপনি GMSCameraUpdate-এর মতো একই টাস্ক পারফর্ম করতে GMSCameraPosition ব্যবহার করতে পারেন, তবে GMSCameraUpdate ক্যামেরা ম্যানিপুলেট করা সহজ করতে অতিরিক্ত সহায়ক পদ্ধতি প্রদান করে।

যেমন, বর্তমান জুম লেভেল বাড়াতে GMSCameraPosition ব্যবহার করতে, আপনাকে প্রথমে বর্তমান জুম লেভেল নির্ধারণ করতে হবে, তারপর একটি GMSCameraPosition অবজেক্ট তৈরি করতে হবে যেখানে আপনি জুমকে বর্তমান জুমের চেয়ে এক বেশি মানে সেট করবেন।

বিকল্প হিসেবে, zoomIn: পদ্ধতির মাধ্যমে GMSCameraUpdate অবজেক্ট তৈরি করুন। তারপর GMSCameraUpdate অবজেক্টকে GMSMapView animateWithCameraUpdate: পদ্ধতিতে পাস করে ক্যামেরা আপডেট করুন।

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

পরিবর্তে, নতুন পজিশনে ক্যামেরা স্ন্যাপ করতে GMSMapView moveCamera: পদ্ধতি ব্যবহার করুন।

পরবর্তী উদাহরণে, আপনি GMSCameraUpdate ব্যবহার করে ক্যামেরার মুভমেন্ট অ্যানিমেট করে ভ্যাঙ্কুভারকে কেন্দ্রে নিয়ে আসেন।

Swift

// Center the camera on Vancouver, Canada
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animate(with: vancouverCam)
      

Objective-C

// Center the camera on Vancouver, Canada
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver];
[mapView animateWithCameraUpdate:vancouverCam];
      

GMSCameraUpdate অবজেক্ট তৈরি করুন

GMSCameraUpdate অবজেক্টের কোনও একটি পদ্ধতি ব্যবহার করে সেটি তৈরি করুন।

zoomIn: ও zoomOut:
অন্য সব প্রপার্টি একই রেখে, বর্তমান জুম লেভেল ১.০-এ পরিবর্তন করুন।
zoomTo:
অন্যান্য সব প্রপার্টি একই রেখে, প্রদত্ত ভ্যালুতে জুম লেভেল পরিবর্তন করে।
zoomBy:
প্রদত্ত ভ্যালু অনুযায়ী জুম লেভেল বাড়ায় (বা কমায়, যদি ভ্যালু নেগেটিভ হয়)।
zoomBy:atPoint:
স্ক্রিনে নির্দিষ্ট পয়েন্টের পজিশন বজায় রেখে, প্রদত্ত ভ্যালু অনুযায়ী জুম লেভেল বাড়ায় (বা কমায়, যদি ভ্যালু নেগেটিভ হয়)।
setTarget:
অন্যান্য সব প্রপার্টি বজায় রেখে, ক্যামেরার অক্ষাংশ ও দ্রাঘিমাংশ পরিবর্তন করে।
setTarget:zoom:
অন্যান্য সব প্রপার্টি অপরিবর্তিত রেখে ক্যামেরার অক্ষাংশ, দ্রাঘিমাংশ এবং জুম পরিবর্তন করে।
setCamera:
নতুন GMSCameraPosition সেট করে।
scrollByX:Y:
ম্যাপ সরানোর জন্য ক্যামেরার অক্ষাংশ ও দ্রাঘিমাংশ পরিবর্তন করে নির্দিষ্ট সংখ্যক পয়েন্টে নিয়ে যায়। x-এর মান পজিটিভ হলে ক্যামেরা ডানদিকে সরে যায়, ফলে ম্যাপ বাঁদিকে সরে গেছে বলে মনে হয়। y-এর পজিটিভ ভ্যালু ক্যামেরাকে নিচের দিকে সরায়, যাতে ম্যাপ উপরের দিকে সরে গেছে বলে মনে হয়। ক্যামেরার বর্তমান বিয়ারিংয়ের সাপেক্ষে স্ক্রল করা হয়। যেমন, ক্যামেরার বিয়ারিং ৯০ ডিগ্রি হলে, পূর্ব দিক "উপরে" থাকে।
fitBounds:
ক্যামেরা ট্রান্সফর্ম করে যাতে স্ক্রিনে নির্দিষ্ট বাউন্ডারিকে সর্বাধিক সম্ভাব্য জুম লেভেলে সেন্টার করা যায়। ৬৪ পয়েন্টের বাউন্ডে ডিফল্ট প্যাডিং প্রয়োগ করে।
fitBounds:withPadding:
স্ক্রিনে নির্দিষ্ট করা বাউন্ডারিকে কেন্দ্র করে ক্যামেরা ট্রান্সফর্ম করে সর্বাধিক সম্ভাব্য জুম লেভেলে। বাউন্ডিং বক্সের সব দিকে একই প্যাডিং, পয়েন্টে, নির্দিষ্ট করতে এই পদ্ধতি ব্যবহার করুন।
fitBounds:withEdgeInsets:
ক্যামেরা ট্রান্সফর্ম করে যাতে স্ক্রিনে নির্দিষ্ট বাউন্ডারি সবচেয়ে বেশি জুম লেভেলে সেন্টারে থাকে। UIEdgeInsets-এর মাধ্যমে, আপনি বাউন্ডিং বক্সের প্রতিটি সাইডের জন্য আলাদাভাবে প্যাডিং নির্দিষ্ট করেন।

একটি প্রপার্টি পরিবর্তন করতে GMSMapView ব্যবহার করুন

GMSMapView এমন কিছু পদ্ধতি প্রদান করে যার সাহায্যে আপনি GMSCameraPosition অবজেক্ট বা GMSCameraUpdate অবজেক্ট ব্যবহার না করেই ক্যামেরা সরাতে পারবেন। এইসব পদ্ধতির মাধ্যমে, যেমন animateToLocation: বা animateToZoom:, আপনি একটি ক্যামেরা প্রপার্টিতে পরিবর্তন অ্যানিমেট করতে পারবেন।

যেমন, ক্যামেরার টিল্টে পরিবর্তন অ্যানিমেট করতে toViewingAngle: পদ্ধতি ব্যবহার করুন।

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

টার্গেট সেট করুন (লোকেশন)

লোকেশন ম্যাপের কেন্দ্র নির্ধারণ করে। অক্ষাংশ ও দ্রাঘিমাংশের মাধ্যমে লোকেশন নির্দিষ্ট করা হয় এবং CLLocationCoordinate2D-এর মাধ্যমে প্রোগ্রাম্যাটিক্যালি দেখানো হয়, যা CLLocationCoordinate2DMake-এর মাধ্যমে তৈরি করা হয়।

লোকেশন পরিবর্তন করতে GMSCameraPosition ব্যবহার করুন। এই উদাহরণে, ম্যাপটি নতুন লোকেশনে স্ন্যাপ করে।

Swift

let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208)
mapView.camera = GMSCameraPosition(target: target, zoom: 6)
      

Objective-C

CLLocationCoordinate2D target =
    CLLocationCoordinate2DMake(-33.868, 151.208);
mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
      

পরিবর্তন অ্যানিমেট করতে এবং ম্যাপ নতুন লোকেশনে প্যান করতে, আপনি camera প্রপার্টি সেট করার পরিবর্তে animateToCameraPosition: পদ্ধতি ব্যবহার করতে পারেন। অথবা, GMSMapView-এ animateToLocation: পদ্ধতি ব্যবহার করুন।

Swift

mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
      

Objective-C

[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
      

এছাড়াও, ক্যামেরা সরানোর জন্য আপনি GMSCameraUpdate অবজেক্ট তৈরি করতে পারবেন। X এবং Y দিকে ক্যামেরা স্ক্রল করার জন্য পয়েন্টের সংখ্যা নির্দিষ্ট করতে, এর বিল্ট-ইন পদ্ধতি, scrollByX:Y:, ব্যবহার করুন। এই উদাহরণে, আপনি ক্যামেরা ২০০ পয়েন্ট ডানদিকে এবং ১০০ পয়েন্ট নিচে স্ক্রল করেন:

Swift

// Move the camera 200 points to the right, and 100 points downwards
let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100)
mapView.animate(with: downwards)
      

Objective-C

// Move the camera 200 points to the right, and 100 points downwards
GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0];
[mapView animateWithCameraUpdate:downwards];
      

দিক (ওরিয়েন্টেশন) সেট করুন

ম্যাপের উপরের প্রান্তের জন্য, বিয়ারিং হল কম্পাসের দিক, যা প্রকৃত উত্তর থেকে ডিগ্রিতে পরিমাপ করা হয়। যেমন, ৯০ ডিগ্রি বিয়ারিংয়ের ফলে ম্যাপের উপরের প্রান্ত পূর্ব দিকে নির্দেশ করে।

GMSCameraPosition বা GMSCameraUpdate অথবা GMSMapView-এর animateToBearing: পদ্ধতি ব্যবহার করে প্রোগ্রাম্যাটিক্যালি বিয়ারিং সেট করুন।

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

টিল্ট (ভিউয়িং অ্যাঙ্গেল) সেট করুন

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

ভিউইং অ্যাঙ্গেল ০ (ম্যাপে সোজা নিচের দিকে পয়েন্ট করা) থেকে শুরু করে জুম-লেভেলের উপর নির্ভর করে সর্বাধিক পর্যন্ত হতে পারে। জুম লেভেল ১৬ বা তার বেশি হলে, সর্বোচ্চ অ্যাঙ্গেল ৬৫ ডিগ্রি হয়। জুম লেভেল ১০ বা তার কম হলে, সর্বাধিক কোণ হল ৩০ ডিগ্রি।

GMSCameraPosition বা GMSCameraUpdate অথবা GMSMapView-এর animateToViewingAngle: পদ্ধতি ব্যবহার করে প্রোগ্রাম্যাটিক্যালি ভিউয়িং অ্যাঙ্গেল সেট করুন।

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

জুম সেট করুন

ক্যামেরার জুম লেভেল ম্যাপের স্কেল নির্ধারণ করে। জুম লেভেল বেশি হলে, আপনি স্ক্রিনে আরও বিস্তারিত দেখতে পাবেন, আবার জুম লেভেল কম হলে, আপনি বিশ্বের আরও বেশি জায়গা দেখতে পাবেন।

GMSCameraPosition বা GMSCameraUpdate অথবা GMSMapView-এর animateToZoom: পদ্ধতির মাধ্যমে প্রোগ্রাম অনুযায়ী জুম সেট করুন।

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

নিম্নলিখিত উদাহরণে zoomIn: পদ্ধতি ব্যবহার করে GMSCameraUpdate অবজেক্ট তৈরি করা হয়েছে যাতে বর্তমান লেভেল থেকে এক লেভেল জুম ইন অ্যানিমেট করা যায়।

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

সীমানা স্থির করে দিন

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

  1. আপনি স্ক্রিনে যে GMSCoordinateBounds দেখতে চান সেটি হিসেব করুন।
  2. নতুন GMSCameraPosition ফিরিয়ে আনতে GMSMapView-এর cameraForBounds:insets: পদ্ধতি ব্যবহার করুন।

এই সীমাগুলি সেট করুন যাতে প্রদত্ত GMSCoordinateBounds বর্তমান ম্যাপের আকারের মধ্যে সম্পূর্ণরূপে ফিট করে। মনে রাখবেন যে এই পদ্ধতিটি ম্যাপের টিল্ট এবং বিয়ারিং ০-তে সেট করে।

নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে ক্যামেরা পরিবর্তন করতে হয় যাতে ভ্যাঙ্কুভার ও ক্যালগারি শহর দুটি একই ভিউতে দেখা যায়।

Swift

let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05)
let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary)
let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())!
mapView.camera = camera
      

Objective-C

CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05);
GMSCoordinateBounds *bounds =
    [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary];
GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero];
mapView.camera = camera;
      

ব্যবহারকারীর প্যানিং নির্দিষ্ট এলাকায় সীমাবদ্ধ করুন

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

যেমন, কোনও শপিং সেন্টার বা এয়ারপোর্টের রিটেল অ্যাপ, ম্যাপকে নির্দিষ্ট সীমার মধ্যে সীমাবদ্ধ করতে চাইতে পারে, যাতে ব্যবহারকারীরা সেই সীমার মধ্যেই স্ক্রল ও প্যান করতে পারেন।

নির্দিষ্ট সীমার মধ্যে প্যানিং সীমাবদ্ধ করতে, GMSMapView-এর cameraTargetBounds প্রপার্টিকে GMSCoordinateBounds অবজেক্টে সেট করুন যা প্রয়োজনীয় সীমা নির্ধারণ করে। পরে বিধিনিষেধ সরাতে, cameraTargetBounds-এর ভ্যালু শূন্য হিসেবে সেট করুন।

Swift

mapView.cameraTargetBounds = bounds
      

Objective-C

mapView.cameraTargetBounds = bounds;
      

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

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

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

ক্যামেরা বাউন্ডের নিচে ডানদিকের কোণে ক্যামেরা টার্গেটের পজিশন দেখানো ডায়াগ্রাম।

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

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

সর্বনিম্ন বা সর্বাধিক জুম সেট করুন

গ্লোবাল কনস্ট্যান্ট kGMSMinZoomLevel এবং kGMSMaxZoomLevel সর্বনিম্ন বা সর্বাধিক জুম ভ্যালু নির্ধারণ করে। ডিফল্ট হিসেবে, GMSMapView-এর minZoom এবং maxZoom প্রপার্টি এইসব কনস্ট্যান্টে সেট করা হয়।

ম্যাপে উপলভ্য জুম লেভেলের রেঞ্জ সীমাবদ্ধ করতে, সর্বনিম্ন ও সর্বাধিক জুম লেভেল সেট করুন। নিম্নলিখিত কোড জুম লেভেলকে ১০ থেকে ১৫-এর মধ্যে সীমাবদ্ধ করে।

Swift

let camera = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 12
)
let options = GMSMapViewOptions()
options.camera = camera
let mapView = GMSMapView(options: options)
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887
                                                       longitude:-87.622
                                                             zoom:12];
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = camera;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
[mapView setMinZoom:10 maxZoom:15];
      

আপনাকে অবশ্যই setMinZoom:maxZoom: পদ্ধতির মাধ্যমে জুম রেঞ্জ সেট করতে হবে; তবে, আপনি minZoom এবং maxZoom প্রপার্টি ব্যবহার করে বর্তমান ভ্যালু পড়তে পারবেন। এই পদ্ধতিটি শুধুমাত্র একটি ভ্যালু সীমাবদ্ধ করার সময় সহায়ক। নিম্নলিখিত কোডটি শুধুমাত্র সর্বনিম্ন জুম লেভেল পরিবর্তন করে।

Swift

mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
      

Objective-C

[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
      

সর্বনিম্ন ও সর্বাধিক জুম আপডেট করার পরে, ক্যামেরার জুম লেভেল নতুন রেঞ্জের বাইরে কোনও ভ্যালুতে সেট করা হলে, বর্তমান জুম অটোমেটিক আপডেট হয়ে সবচেয়ে কাছাকাছি সঠিক ভ্যালু দেখায়। যেমন, নিম্নলিখিত কোডে, আসল জুম ৪ হিসেবে উল্লেখ করা হয়েছে। পরে জুম রেঞ্জ ১০-১৫-এ সেট করা হলে, বর্তমান জুম আপডেট হয়ে ১০ হয়ে যায়।

Swift

// Sets the zoom level to 4.
let camera2 = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 4
)
let options2 = GMSMapViewOptions()
options2.camera = camera2
let mapView2 = GMSMapView(options: options2)

// The current zoom, 4, is outside of the range. The zoom will change to 10.
mapView2.setMinZoom(10, maxZoom: 15)
      

Objective-C

// Sets the zoom level to 4.
GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887
                                                         longitude:-87.622
                                                              zoom:4];
GMSMapViewOptions *options2 = [[GMSMapViewOptions alloc] init];
options2.camera = camera2;
GMSMapView *mapView2 = [[GMSMapView alloc] initWithOptions:options2];
// The current zoom, 4, is outside of the range. The zoom will change to 10.
[mapView setMinZoom:10 maxZoom:15];