
গুগল ম্যাপস স্ট্রিট ভিউ আপনাকে ৩৬০-ডিগ্রি, রাস্তার স্তরের ছবির মাধ্যমে বিশ্বজুড়ে বিভিন্ন স্থান ঘুরে দেখার সুযোগ দেয়। আপনি বিশ্বের দর্শনীয় স্থানগুলো ঘুরে দেখতে পারেন, প্রাকৃতিক বিস্ময় উপভোগ করতে পারেন, ভ্রমণের পথ খুঁজে নিতে পারেন, অথবা আপনার ব্যবসার বাইরের অংশ দেখাতে পারেন।
সংক্ষিপ্ত বিবরণ
গুগল স্ট্রিট ভিউ তার কভারেজ এলাকা জুড়ে নির্দিষ্ট রাস্তাগুলো থেকে ৩৬০-ডিগ্রি প্যানোরামিক দৃশ্য দেখায়। এসডিকে (SDK)-এর মাধ্যমে যে কভারেজ পাওয়া যায়, তা আইওএস (iOS)-এর জন্য গুগল ম্যাপস অ্যাপ বা https://maps.google.com/ মতোই। আপনি স্ট্রিট ভিউ সম্পর্কে আরও জানতে এবং একটি ইন্টারেক্টিভ ম্যাপে এর সমর্থিত এলাকাগুলো দেখতে পারেন ‘ অ্যাবাউট স্ট্রিট ভিউ’ (About Street View) অংশে।
iOS-এর জন্য Maps SDK, Google Maps Street View-তে ব্যবহৃত চিত্রাবলী সংগ্রহ ও পরিচালনা করার জন্য একটি Street View পরিষেবা প্রদান করে। Street View-এর ছবিগুলো প্যানোরামা হিসেবে ফেরত আসে এবং এগুলো Street View ভিউয়ারের ভেতর থেকে দেখা যায় — যা GMSPanoramaView টাইপের একটি অবজেক্ট।
স্ট্রিট ভিউ প্যানোরামা
প্রতিটি স্ট্রিট ভিউ প্যানোরামা হলো একটি ছবি বা একাধিক ছবির সমষ্টি, যা একটি নির্দিষ্ট স্থান থেকে সম্পূর্ণ ৩৬০-ডিগ্রি দৃশ্য প্রদান করে। ছবিগুলো ইক্যুইরেক্ট্যাঙ্গুলার (প্লেট ক্যারে) প্রজেকশন মেনে চলে, যাতে ৩৬০-ডিগ্রি আনুভূমিক দৃশ্য (সম্পূর্ণ চারপাশ জুড়ে) এবং ১৮০-ডিগ্রি উল্লম্ব দৃশ্য (সোজা উপর থেকে সোজা নিচে পর্যন্ত) থাকে। এর ফলে প্রাপ্ত ৩৬০-ডিগ্রি প্যানোরামাটি একটি গোলকের উপর এমন একটি প্রজেকশন তৈরি করে, যেখানে ছবিটি সেই গোলকের দ্বি-মাত্রিক পৃষ্ঠে মোড়ানো থাকে।
স্ট্রিট ভিউ প্যানোরামা GMSPanoramaView অবজেক্টের মাধ্যমে দেখা যায়। এই অবজেক্টটি একটি ভিউয়ার প্রদান করে যা প্যানোরামাটিকে একটি গোলক হিসেবে রেন্ডার করবে, যার কেন্দ্রে একটি ক্যামেরা থাকবে। আপনি প্রোগ্রামিংয়ের মাধ্যমে ক্যামেরার অভিমুখ নিয়ন্ত্রণ করতে পারবেন, সেইসাথে ভিউয়ারটিকে নিজের মতো করে সাজানোর জন্য বিভিন্ন প্রোপার্টিও ব্যবহার করতে পারবেন।
স্ট্রিট ভিউ ডেটা অ্যাক্সেস করুন
স্ট্রিট ভিউ প্যানোরামা দুটি মেটাডেটার একটি দ্বারা চিহ্নিত করা হয়:
-
panoramaID - একটি স্ট্রিট ভিউ প্যানোরামার অনন্য আইডি। এই
panoramaIDসময়ের সাথে সাথে পরিবর্তিত হতে পারে এবং এটি দীর্ঘমেয়াদী বা হার্ড-কোডেড রেফারেন্স হিসাবে উপযুক্ত নয়। বিভিন্ন স্ট্রিট ভিউ ছবিতে প্রোগ্রাম্যাটিক অ্যাক্সেস প্রদানের জন্যpanoramaIDসবচেয়ে ভালোভাবে ব্যবহৃত হয়। -
coordinate - এই ছবিটির সুনির্দিষ্ট অবস্থান, যা একটি
CLLocationCoordinate2Dহিসেবে প্রকাশ করা হয়। কোনো প্যানোরামার অবস্থান স্থায়ীভাবে সংরক্ষণ করতে, অথবা ম্যাপে ব্যবহারকারীর কার্যকলাপকে একটি স্ট্রিট ভিউ ছবিতে রূপান্তর করতেcoordinateব্যবহার করুন।
panoramaID এবং coordinate উভয়ই GMSPanorama অবজেক্টের প্রোপার্টি হিসেবে সংরক্ষিত থাকে। আপনি coordinate অথবা panoramaID ব্যবহার করে GMSPanoramaService থেকে একটি GMSPanorama জন্য অনুরোধ করতে পারেন। ফলস্বরূপ প্রাপ্ত অবজেক্টটিতে এই দুটি মেটা-ডেটার পাশাপাশি কাছাকাছি প্যানোরামাগুলোর লিঙ্কের একটি অ্যারেও অন্তর্ভুক্ত থাকবে।
প্যানোরামার অবস্থান নির্ধারণ করুন
স্থানাঙ্কের উপর ভিত্তি করে স্ট্রিট ভিউ প্যানোরামার অবস্থান নির্ধারণ করা যেতে পারে।
moveNearCoordinateমেথডটি স্থানাঙ্কটির নিকটবর্তী একটি প্যানোরামার জন্য অনুরোধ করে।`
moveNearCoordinate:radiusমেথডটি একই রকম, তবে এটি আপনাকে স্থানাঙ্কের চারপাশে মিটারে একটি অনুসন্ধান ব্যাসার্ধ নির্দিষ্ট করার সুযোগ দেয়।`
moveNearCoordinate:sourceমেথডটি আপনাকে একটি উৎস নির্দিষ্ট করার সুযোগ দেয়। যদি আপনি স্ট্রিট ভিউকে শুধুমাত্র বাইরের প্যানোরামাগুলো খোঁজার মধ্যে সীমাবদ্ধ রাখতে চান, তবে একটি উৎস ব্যবহার করা উপকারী। ডিফল্টরূপে, কোনো স্থানের প্যানোরামাগুলো হয় ভিতরের অথবা বাইরের হয়ে থাকে। মনে রাখবেন যে, নির্দিষ্ট করা স্থানটির জন্য বাইরের কোনো প্যানোরামা নাও থাকতে পারে।`
moveNearCoordinate:radius:sourceমেথডটি আপনাকে একটি ব্যাসার্ধ এবং একটি উৎস উভয়ই নির্দিষ্ট করার সুযোগ দেয়।
স্ট্রিট ভিউ ছবি দেখা
স্ট্রিট ভিউ ভিউয়ার যোগ করা
ভিউয়ার যোগ করার প্রাথমিক ধাপগুলো হলো:
- একবার, SDK পেতে, একটি কী সংগ্রহ করতে এবং প্রয়োজনীয় ফ্রেমওয়ার্কগুলো যোগ করতে ‘Getting Started’- এর ধাপগুলো অনুসরণ করুন।
- একটি
ViewControllerতৈরি বা আপডেট করুন। যদি এই ভিউ কন্ট্রোলারটি দৃশ্যমান হওয়ার সাথে সাথে প্যানোরামা প্রদর্শিত হয়, তবে অবশ্যই এটিকেloadViewমেথডের মধ্যে তৈরি করুন। -
GMSPanoramaViewinitWithFrame:মেথডটি ব্যবহার করে একটিGMSPanoramaViewক্লাস তৈরি ও ইনস্ট্যানশিয়েট করুন। যদি এটিকে ভিউ কন্ট্রোলারের একমাত্র ভিউ হিসেবে ব্যবহার করতে হয়, তাহলে ম্যাপের ফ্রেম হিসেবেCGRectZeroব্যবহার করা যেতে পারে — ম্যাপটি স্বয়ংক্রিয়ভাবে রিসাইজ হয়ে যাবে। -
GMSPanoramaViewঅবজেক্টটিকে ভিউ কন্ট্রোলারের ভিউ হিসেবে সেট করুন। উদাহরণস্বরূপ,self.view = panoView;। -
moveNearCoordinate:`-এর মতো কোনো পদ্ধতি ব্যবহার করে স্ট্রিট ভিউ ইমেজের অবস্থান নির্ধারণ করুন।
নিচের উদাহরণটি একটি অ্যাপে স্ট্রিট ভিউ ভিউয়ার যুক্ত করে।
সুইফট
import GoogleMaps class StreetView: UIViewController { override func loadView() { let panoView = GMSPanoramaView(frame: .zero) self.view = panoView panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)) } }
উদ্দেশ্য-সি
#import "StreetView.h" @import GoogleMaps; @interface StreetView () @end @implementation StreetView - (void)loadView { GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero]; self.view = panoView; [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)]; } @end
ভিউয়ার কাস্টমাইজ করুন
কোন কোন জেসচার ব্যবহার করা যাবে তা সীমিত করে আপনি ভিউয়ারটি কাস্টমাইজ করতে পারেন। ডিফল্টরূপে, প্যানিং, জুমিং এবং পাশের প্যানোরামায় যাওয়া সবই সক্রিয় থাকে। প্রতিটি জেসচার GMSPanoramaView এর প্রপার্টিজের মাধ্যমে নিয়ন্ত্রণ করা হয়। এই প্রপার্টিজগুলো ব্যবহারকারী-নিয়ন্ত্রিত জেসচার সক্রিয় বা নিষ্ক্রিয় করে; জেসচার নিষ্ক্রিয় থাকলেও প্রোগ্রামিংয়ের মাধ্যমে পরিবর্তন করা সম্ভব।
-
orientationGestures - ব্যবহারকারী ট্যাপ করে বা ড্র্যাগ করে ক্যামেরার দিক পরিবর্তন করতে পারবেন কিনা। ক্যামেরার দিক পরিবর্তন নিষ্ক্রিয় করতে এটিকে
NOতে সেট করুন। -
zoomGestures - ব্যবহারকারী পিঞ্চ করে জুম করতে পারবেন কিনা। জুম নিষ্ক্রিয় করতে 'না' (
NOসেট করুন। -
navigationGestures - ব্যবহারকারী কোন প্যানোরামাটি দেখা যাবে তা পরিবর্তন করতে পারবেন কিনা। ব্যবহারকারীরা প্যানোরামা পরিবর্তন করার জন্য নেভিগেশন লিঙ্কে একবার ট্যাপ করতে পারেন অথবা ভিউটিতে দুইবার ট্যাপ করতে পারেন। নেভিগেশন পরিবর্তন নিষ্ক্রিয় করতে এটিকে 'না' (
NOতে সেট করুন।
আপনি setAllGesturesEnabled: ` মেথডটি ব্যবহার করে একবারে সমস্ত জেসচার চালু বা বন্ধ করতে পারেন।
সুইফট
panoView.setAllGesturesEnabled(false)
উদ্দেশ্য-সি
[panoView setAllGesturesEnabled:NO];
ইউআরএল স্কিমের মাধ্যমে স্ট্রিট ভিউ চালু করা
Google Maps for iOS অ্যাপ্লিকেশনটির ভেতর থেকে Google Street View-এর ছবি দেখা যায়। আপনি mapmode প্যারামিটারটিকে streetview তে সেট করে comgooglemaps URL Scheme ব্যবহার করে Google Maps for iOS অ্যাপ্লিকেশনটিকে স্ট্রিট ভিউ মোডে চালু করতে পারেন। যে URL-টি স্ট্রিট ভিউ চালু করবে, তার একটি উদাহরণ নিচে দেওয়া হলো। আরও তথ্যের জন্য, URL Scheme ডকুমেন্টেশনটি দেখুন।
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
স্ট্রিট ভিউ অবস্থান এবং দৃষ্টিকোণ (পিওভি)
GMSPanoramaCamera আপনাকে হেডিং, পিচ এবং জুমের সমন্বয়ে স্ট্রিট ভিউ ক্যামেরার দৃষ্টিকোণ সেট করার সুযোগ দেয়।
নিচের কোড স্নিপেটটি ক্যামেরাকে দক্ষিণ দিকে এবং সামান্য নিচের দিকে অভিমুখী করবে।
সুইফট
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
উদ্দেশ্য-সি
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
অভিমুখীকরণ
স্ট্রিট ভিউ লোকেশন একটি ছবির জন্য ক্যামেরা ফোকাসের অবস্থান নির্ধারণ করে, কিন্তু এটি সেই ছবির জন্য ক্যামেরার অভিমুখ নির্ধারণ করে না। সেই উদ্দেশ্যে, GMSOrientation অবজেক্টটি দুটি প্রোপার্টি সংজ্ঞায়িত করে:
-
headingপ্রকৃত উত্তর দিক থেকে ক্যামেরা লোকাসের চারপাশে ঘূর্ণন কোণকে ডিগ্রিতে সংজ্ঞায়িত করে। হেডিং ঘড়ির কাঁটার দিকে মাপা হয়: প্রকৃত উত্তর হলো ০, পূর্ব হলো ৯০, দক্ষিণ হলো ১৮০, পশ্চিম হলো ২৭০। -
pitch(ডিফল্ট0) ক্যামেরার প্রাথমিক ডিফল্ট পিচ থেকে কোণের "উপরে" বা "নিচে" তারতম্য নির্ধারণ করে, যা প্রায়শই (তবে সর্বদা নয়) সমতল অনুভূমিক হয়। (উদাহরণস্বরূপ, একটি পাহাড়ে তোলা ছবির ডিফল্ট পিচ সম্ভবত অনুভূমিক হবে না।) পিচ কোণ পরিমাপ করা হয় ধনাত্মক মান উপরের দিকে তাকিয়ে (ডিফল্ট পিচের সাথে লম্বভাবে +৯০ ডিগ্রি পর্যন্ত) এবং ঋণাত্মক মান নিচের দিকে তাকিয়ে (ডিফল্ট পিচের সাথে লম্বভাবে -৯০ ডিগ্রি পর্যন্ত)।
জুম
স্ট্রিট ভিউ জুম ব্যবহারের মাধ্যমে ছবির বিস্তারিত বিবরণের বিভিন্ন স্তর সমর্থন করে। আপনি প্রোগ্রামের মাধ্যমে জুমের স্তর নির্ধারণ করতে পারেন, অথবা ব্যবহারকারীরা ভিউয়ারে পিঞ্চ করে জুম করার মাধ্যমে স্তরটি পরিবর্তন করতে পারেন।
ক্যামেরা সরানো
একবার আপনি GMSPanoramaView তৈরি করে ফেললে, এবং এতে একটি কনফিগার করা বা ডিফল্ট ক্যামেরা থাকলে, আপনি বিভিন্ন উপায়ে তা পরিবর্তন করতে পারেন। ক্যামেরা পরিবর্তন করার সময়, এর ফলে সৃষ্ট ক্যামেরার নড়াচড়াকে অ্যানিমেট করার বিকল্প আপনার কাছে থাকে। এই অ্যানিমেশনটি বর্তমান ক্যামেরার বৈশিষ্ট্য এবং নতুন ক্যামেরার বৈশিষ্ট্যের মধ্যে ইন্টারপোলেট করে।
আপনি GMSPanoramaCamera অবজেক্টটি পরিবর্তন করতে পারেন এবং এটিকে GMSPanoramaView এর camera প্রপার্টিতে সেট করতে পারেন। এটি কোনো অ্যানিমেশন ছাড়াই ক্যামেরাটিকে নতুন দৃষ্টিকোণে স্থির করে দেবে। ওরিয়েন্টেশন এবং জুমের যেকোনো সমন্বয় কনফিগার করার জন্য একটি GMSCameraPosition তৈরি করা যেতে পারে।
সুইফট
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
উদ্দেশ্য-সি
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
আপনি GMSPanoramaView এর animateToCamera:animationDuration: মেথডটি কল করে একটি ট্রানজিশন অ্যানিমেট করতে পারেন। এছাড়াও, আপনি কোর অ্যানিমেশন (Core Animation) ব্যবহার করে ক্যামেরা নিয়ন্ত্রণ করতে পারেন। এই সুবিধাটি GMSPanoramaView এর কাস্টম CALayer , GMSPanoramaLayer এর মাধ্যমে উপলব্ধ করা হয়েছে।
স্ট্রিট ভিউয়ের মধ্যে থাকা মার্কার
GMSPanoramaView অবজেক্টটি ম্যাপ মার্কার প্রদর্শন করতে সক্ষম। আপনি এর সংশ্লিষ্ট প্রোপার্টিগুলো সেট করার মাধ্যমে একটি GMSMapView বা একটি GMSPanoramaView অবজেক্ট, উভয়টিতেই একই GMSMarker অবজেক্ট ব্যবহার করতে পারেন:
সুইফট
// Create a marker at the Eiffel Tower let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294) let marker = GMSMarker(position: position) // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView // Add the marker to a GMSMapView object named mapView marker.map = mapView
উদ্দেশ্য-সি
// Create a marker at the Eiffel Tower CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294); GMSMarker *marker = [GMSMarker markerWithPosition:position]; // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView; // Add the marker to a GMSMapView object named mapView marker.map = mapView;
মার্কারের অবস্থান এবং GMSCameraView এর অবস্থানের মধ্যবর্তী দূরত্বের উপর নির্ভর করে মার্কারের আকার পরিবর্তিত হবে। যদি এই দূরত্ব খুব বেশি হয়ে যায়, তাহলে মার্কারটি প্রদর্শনের জন্য খুব ছোট হয়ে যাবে এবং দৃষ্টির আড়ালে চলে যাবে।
GMSPanoramaView থেকে panoramaView কে অপসারণ করতে এর প্রপার্টির মান nil সেট করুন।
সুইফট
marker.panoramaView = nil
উদ্দেশ্য-সি
marker.panoramaView = nil;
ইভেন্টগুলি
আপনি স্ট্রিট ভিউ প্যানোরামায় ঘটা ইভেন্টগুলো শুনতে পারেন, যেমন যখন কোনো ব্যবহারকারী প্যানোরামাটিতে ট্যাপ করেন। ইভেন্টগুলো শোনার জন্য, আপনাকে অবশ্যই GMSPanoramaViewDelegate প্রোটোকলটি ইমপ্লিমেন্ট করতে হবে। ইভেন্টগুলোর সার্বিক নির্দেশিকা এবং GMSPanoramaViewDelegate এর মেথডগুলোর তালিকা দেখুন।