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

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

iOS এর জন্য Maps SDK এর সাহায্যে, আপনি মানচিত্রের ক্যামেরা পরিবর্তন করে মানচিত্রের প্রতি ব্যবহারকারীর দৃষ্টিভঙ্গি পরিবর্তন করতে পারেন।

iOS-এর জন্য Maps SDK-এর সাহায্যে, আপনার ব্যবহারকারীরা আপনার মানচিত্রগুলিকে তাদের প্রেক্ষাপটের জন্য উপযোগী একটি ওরিয়েন্টেশনে সামঞ্জস্য করতে এবং কাত করতে এবং ঘোরাতে পারবেন। যেকোনো জুম স্তরে, ব্যবহারকারীরা খুব কম লেটেন্সিতে মানচিত্রটি প্যান করতে বা এর দৃষ্টিকোণ পরিবর্তন করতে পারবেন।

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

মানচিত্রের দৃশ্য

iOS এর জন্য Maps SDK আপনার ডিভাইসের স্ক্রিনে (একটি সমতল সমতল) বিশ্বের পৃষ্ঠ (একটি গোলক) উপস্থাপন করতে Mercator প্রক্ষেপণ ব্যবহার করে।

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

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

ক্যামেরার বৈশিষ্ট্য চিত্র

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

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

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

বিয়ারিং (অভিমুখীকরণ)

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

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

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

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

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

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

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

নিচের ছবিতে, দেখার কোণ ৪৫ ডিগ্রি। লক্ষ্য করুন যে ক্যামেরাটি সোজা মাথার উপরে (০ ডিগ্রি) এবং ভূমির (৯০ ডিগ্রি) মাঝখানে একটি বৃত্ত বরাবর অর্ধেক পথ ধরে ৩ নম্বর অবস্থানে চলে যাচ্ছে। ক্যামেরাটি এখনও মানচিত্রের কেন্দ্রবিন্দুতে নির্দেশ করছে, কিন্তু ৪ নম্বর অবস্থানে রেখা দ্বারা প্রতিনিধিত্ব করা এলাকাটি এখন দৃশ্যমান।

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

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

জুম

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

জুম লেভেল ১ বাড়ালে স্ক্রিনের জগতের প্রস্থ দ্বিগুণ হয়। অতএব জুম লেভেল N-এ, জগতের প্রস্থ প্রায় ২৫৬ * ২ N পয়েন্ট। উদাহরণস্বরূপ, জুম লেভেল ২-এ, সমগ্র জগতের প্রস্থ প্রায় ১০২৪ পয়েন্ট।

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

  • ১: বিশ্ব
  • ৫: স্থলভাগ/মহাদেশ
  • ১০: শহর
  • ১৫: রাস্তাঘাট
  • ২০: ভবন
নিম্নলিখিত চিত্রগুলি বিভিন্ন জুম স্তরের দৃশ্যমান চেহারা দেখায়:
৫ জুম লেভেলে একটি মানচিত্রের স্ক্রিনশট
জুম লেভেল ৫-এ একটি মানচিত্র।
১৫ জুম লেভেলে একটি মানচিত্রের স্ক্রিনশট
জুম লেভেল ১৫-এ একটি মানচিত্র।
জুম লেভেল ২০-এ একটি মানচিত্রের স্ক্রিনশট
জুম লেভেল ২০-এ একটি মানচিত্র।

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

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

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

সুইফট

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

অবজেক্টিভ-সি

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 অবজেক্টও তৈরি করতে পারেন। এই ক্ষেত্রে, ক্যামেরার অবস্থান ডিফল্ট অবস্থান থেকে শুরু হয় এবং তৈরির পরে আপনি এটি পরিবর্তন করেন।

সুইফট

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

অবজেক্টিভ-সি

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

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

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

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

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

যখন আপনি ক্যামেরাটি সরান, তখন আপনি ক্যামেরাটিকে নতুন অবস্থানে "স্ন্যাপ" করতে পারেন, অর্থাৎ কোনও অ্যানিমেশন নেই, অথবা মুভটি অ্যানিমেট করতে পারেন। উদাহরণস্বরূপ, যদি আপনি ক্যামেরার টার্গেট লোকেশনে কোনও পরিবর্তন অ্যানিমেট করেন, তাহলে অ্যানিমেশনটি আগের অবস্থান থেকে নতুন অবস্থানে চলে যাবে।

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

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

GMSCameraPosition ব্যবহার করে ক্যামেরা পরিবর্তন করতে, আপনাকে একটি নতুন অবজেক্ট তৈরি করতে হবে অথবা বিদ্যমান অবজেক্টটি কপি করতে হবে এবং তারপর এটি GMSMapView অবজেক্টে সেট করতে হবে। অ্যানিমেশন সহ বা ছাড়াই ক্যামেরাটিকে নতুন স্থানে স্ন্যাপ করতে GMSCameraPosition অবজেক্ট ব্যবহার করুন।

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

সুইফট

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

অবজেক্টিভ-সি

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

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

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

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

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

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

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

সুইফট

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

অবজেক্টিভ-সি

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

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

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

সুইফট

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

অবজেক্টিভ-সি

// 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 মানের ফলে ক্যামেরাটি নীচের দিকে সরাতে বাধ্য করে, যার ফলে মানচিত্রটি উপরে সরানো হয়েছে বলে মনে হয়। স্ক্রোলিং ক্যামেরার বর্তমান বিয়ারিংয়ের সাথে সম্পর্কিত। উদাহরণস্বরূপ, যদি ক্যামেরার বিয়ারিং 90 ডিগ্রি থাকে, তাহলে পূর্ব "উপরে"।
fitBounds:
সর্বোচ্চ সম্ভাব্য জুম স্তরে স্ক্রিনে নির্দিষ্ট সীমানা কেন্দ্রে ক্যামেরাকে রূপান্তরিত করে। 64 পয়েন্টের সীমানায় একটি ডিফল্ট প্যাডিং প্রয়োগ করে।
fitBounds:withPadding:
ক্যামেরাটিকে সর্বোচ্চ সম্ভাব্য জুম স্তরে স্ক্রিনে নির্দিষ্ট সীমানা কেন্দ্রীভূত করতে রূপান্তরিত করে। বাউন্ডিং বাক্সের সমস্ত দিকের জন্য একই প্যাডিং, পয়েন্টে, নির্দিষ্ট করতে এই পদ্ধতিটি ব্যবহার করুন।
fitBounds:withEdgeInsets:
ক্যামেরাটিকে সর্বোচ্চ সম্ভাব্য জুম স্তরে স্ক্রিনে নির্দিষ্ট সীমানা কেন্দ্রীভূত করতে রূপান্তরিত করে। UIEdgeInsets এর সাহায্যে, আপনি বাউন্ডিং বক্সের প্রতিটি পাশের জন্য স্বাধীনভাবে প্যাডিং নির্দিষ্ট করতে পারেন।

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

GMSMapView বিভিন্ন পদ্ধতি প্রদান করে যা আপনাকে GMSCameraPosition অবজেক্ট বা GMSCameraUpdate অবজেক্ট ব্যবহার না করেই ক্যামেরা সরাতে সাহায্য করে। animateToLocation: অথবা animateToZoom: এর মতো এই পদ্ধতিগুলির সাহায্যে আপনি একটি একক ক্যামেরা বৈশিষ্ট্যে পরিবর্তন অ্যানিমেট করতে পারেন।

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

সুইফট

mapView.animate(toViewingAngle: 45)
      

অবজেক্টিভ-সি

[mapView animateToViewingAngle:45];
      

লক্ষ্য নির্ধারণ করুন (অবস্থান)

অবস্থানটি মানচিত্রের কেন্দ্র নির্ধারণ করে। অবস্থানগুলি অক্ষাংশ এবং দ্রাঘিমাংশ দ্বারা নির্দিষ্ট করা হয় এবং CLLocationCoordinate2D দ্বারা প্রোগ্রাম্যাটিকভাবে উপস্থাপন করা হয়, যা CLLocationCoordinate2DMake দিয়ে তৈরি।

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

সুইফট

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

অবজেক্টিভ-সি

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

পরিবর্তনটি অ্যানিমেট করতে এবং মানচিত্রটিকে নতুন অবস্থানে প্যান করতে, আপনি camera বৈশিষ্ট্য সেট করার পরিবর্তে animateToCameraPosition: পদ্ধতি ব্যবহার করতে পারেন। অথবা, GMSMapViewanimateToLocation: পদ্ধতি ব্যবহার করুন।

সুইফট

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

অবজেক্টিভ-সি

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

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

সুইফট

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

অবজেক্টিভ-সি

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

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

মানচিত্রের উপরের প্রান্তের জন্য বিয়ারিং হল কম্পাসের দিক, যা প্রকৃত উত্তর থেকে ডিগ্রীতে পরিমাপ করা হয়। উদাহরণস্বরূপ, 90 ডিগ্রি বিয়ারিংয়ের ফলে একটি মানচিত্র তৈরি হয় যেখানে উপরের প্রান্তটি পূর্ব দিকে নির্দেশ করে।

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

সুইফট

mapView.animate(toBearing: 0)
      

অবজেক্টিভ-সি

[mapView animateToBearing:0];
      

কাত (দেখার কোণ) সেট করুন

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

দেখার কোণ ০ (মানচিত্রের দিকে সরাসরি নির্দেশ করে) এবং জুম-স্তরের উপর নির্ভরশীল সর্বোচ্চ পর্যন্ত হতে পারে। জুম স্তর ১৬ বা তার বেশির জন্য, সর্বোচ্চ কোণ ৬৫ ডিগ্রি। জুম স্তর ১০ বা তার কমের জন্য, সর্বোচ্চ কোণ ৩০ ডিগ্রি।

GMSCameraPosition অথবা GMSCameraUpdate ব্যবহার করে অথবা GMSMapView এর animateToViewingAngle: পদ্ধতি ব্যবহার করে প্রোগ্রাম্যাটিকভাবে দেখার কোণ সেট করুন।

সুইফট

mapView.animate(toViewingAngle: 45)
      

অবজেক্টিভ-সি

[mapView animateToViewingAngle:45];
      

জুম সেট করুন

ক্যামেরার জুম লেভেল মানচিত্রের স্কেল নির্ধারণ করে। বড় জুম লেভেলে, আপনি স্ক্রিনে আরও বিশদ দেখতে পাবেন, অন্যদিকে ছোট জুম লেভেলে, আপনি বিশ্বের আরও অনেক কিছু দেখতে পাবেন।

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

সুইফট

mapView.animate(toZoom: 12)
      

অবজেক্টিভ-সি

[mapView animateToZoom:12];
      

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

সুইফট

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

অবজেক্টিভ-সি

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

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

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

  1. স্ক্রিনে আপনি যে GMSCoordinateBounds গুলি দৃশ্যমান করতে চান তা গণনা করুন।
  2. একটি নতুন GMSCameraPosition ফেরত দিতে GMSMapView এর cameraForBounds:insets: পদ্ধতি ব্যবহার করুন।

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

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

সুইফট

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
      

অবজেক্টিভ-সি

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 শূন্যে সেট করুন।

সুইফট

mapView.cameraTargetBounds = bounds
      

অবজেক্টিভ-সি

mapView.cameraTargetBounds = bounds;
      

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

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

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

ক্যামেরার সীমানার নীচের ডান কোণে অবস্থিত ক্যামেরা টার্গেট দেখানো চিত্র।

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

ভিউপোর্টের চেয়ে ছোট একটি ক্যামেরার সীমানা দেখানো চিত্র।

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

গ্লোবাল ধ্রুবক kGMSMinZoomLevel এবং kGMSMaxZoomLevel সর্বনিম্ন বা সর্বোচ্চ জুম মান নির্ধারণ করে। ডিফল্টরূপে, GMSMapView এর minZoom এবং maxZoom বৈশিষ্ট্যগুলি এই ধ্রুবকগুলিতে সেট করা থাকে।

মানচিত্রে উপলব্ধ জুম লেভেলের পরিসর সীমিত করতে, একটি সর্বনিম্ন এবং সর্বোচ্চ জুম লেভেল সেট করুন। নিম্নলিখিত কোডটি জুম লেভেলকে 10 থেকে 15 এর মধ্যে সীমাবদ্ধ করে।

সুইফট

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

অবজেক্টিভ-সি

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887
                                                       longitude:-87.622
                                                             zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero
                                        camera:camera];
[mapView setMinZoom:10 maxZoom:15];
      

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

সুইফট

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

অবজেক্টিভ-সি

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

যদি, সর্বনিম্ন এবং সর্বোচ্চ জুম আপডেট করার পরে, ক্যামেরার জুম স্তরটি নতুন পরিসরের বাইরের কোনও মানে সেট করা হয়, তাহলে বর্তমান জুমটি স্বয়ংক্রিয়ভাবে নিকটতম বৈধ মান প্রদর্শনের জন্য আপডেট হয়। উদাহরণস্বরূপ, নিম্নলিখিত কোডে, মূল জুমটি 4 হিসাবে সংজ্ঞায়িত করা হয়েছে। যখন জুম পরিসরটি পরে 10-15 এ সেট করা হয়, তখন বর্তমান জুমটি 10 ​​এ আপডেট করা হয়।

সুইফট

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

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

অবজেক্টিভ-সি

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