
যখন ব্যবহারকারী কোনো মার্কারে ট্যাপ করেন, তখন একটি তথ্য উইন্ডো তাকে তথ্য প্রদর্শন করার সুযোগ দেয়।
ডিভাইসের স্ক্রিনের বিপরীতে, এর সংশ্লিষ্ট মার্কারের উপরে কেন্দ্রে একটি তথ্য উইন্ডো আঁকা হয়। ডিফল্ট তথ্য উইন্ডোতে শিরোনামটি গাঢ় অক্ষরে থাকে এবং শিরোনামের নিচে সংক্ষিপ্ত পাঠ্যটি থাকে।
ইনফো উইন্ডোর বিষয়বস্তু মার্কারের title এবং snippet প্রপার্টি দ্বারা নির্ধারিত হয়। যদি title এবং snippet প্রপার্টি উভয়ই ফাঁকা বা nil থাকে, তবে মার্কারটিতে ক্লিক করলে কোনো ইনফো উইন্ডো প্রদর্শিত হয় না।
একবারে কেবল একটি তথ্য উইন্ডো প্রদর্শিত হয়। যদি কোনো ব্যবহারকারী অন্য কোনো মার্কারে ট্যাপ করেন, তাহলে বর্তমান উইন্ডোটি লুকানো হয়ে যায় এবং নতুন তথ্য উইন্ডোটি খোলে। যদি ব্যবহারকারী এমন কোনো মার্কারে ক্লিক করেন যেখানে বর্তমানে একটি তথ্য উইন্ডো দেখা যাচ্ছে, তাহলে সেই তথ্য উইন্ডোটি বন্ধ হয়ে আবার খোলে।
অতিরিক্ত লেখা বা ছবি যোগ করতে একটি কাস্টম তথ্য উইন্ডো তৈরি করুন। একটি কাস্টম তথ্য উইন্ডো আপনাকে পপআপের বাহ্যিক রূপের উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।
একটি তথ্য উইন্ডো যোগ করুন
নিম্নলিখিত কোড স্নিপেটটি একটি সাধারণ মার্কার তৈরি করে, যেখানে তথ্য উইন্ডোর টেক্সটের জন্য শুধুমাত্র একটি শিরোনাম থাকে।
সুইফট
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
উদ্দেশ্য-সি
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
snippet প্রপার্টির সাহায্যে আপনি অতিরিক্ত টেক্সট যোগ করতে পারেন, যা শিরোনামের নিচে ছোট ফন্টে প্রদর্শিত হবে। ইনফো উইন্ডোর প্রস্থের চেয়ে দীর্ঘ স্ট্রিংগুলো স্বয়ংক্রিয়ভাবে একাধিক লাইনে চলে যায়। খুব দীর্ঘ বার্তা সংক্ষিপ্ত হয়ে যেতে পারে।
সুইফট
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
উদ্দেশ্য-সি
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
একটি তথ্য উইন্ডো দেখান/লুকান
ইনফো উইন্ডোগুলো মার্কারের উপর ব্যবহারকারীর টাচ ইভেন্টে সাড়া দেওয়ার জন্য ডিজাইন করা হয়েছে। আপনি GMSMapView এর selectedMarker প্রপার্টি সেট করার মাধ্যমে প্রোগ্রাম্যাটিকভাবে একটি ইনফো উইন্ডো দেখাতে বা লুকাতে পারেন।
- মার্কারটি দেখানোর জন্য
selectedMarkerএ সেটির নাম সেট করুন। - এটিকে লুকানোর জন্য
selectedMarkernilএ সেট করুন।
সুইফট
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
উদ্দেশ্য-সি
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
একটি তথ্য উইন্ডো স্বয়ংক্রিয়ভাবে রিফ্রেশ করার জন্য সেট করা হচ্ছে
যদি আপনি চান যে নতুন প্রোপার্টি বা ইনফো উইন্ডোর বিষয়বস্তু পরিবর্তিত হওয়ার সাথে সাথেই প্রদর্শিত হোক, এবং এর জন্য ইনফো উইন্ডোটি লুকানো ও পুনরায় দেখানোর জন্য অপেক্ষা করতে না হয়, তাহলে মার্কারের tracksInfoWindowChanges YES বা true তে সেট করুন। এর ডিফল্ট মান হলো NO বা false ।
সুইফট
london.tracksInfoWindowChanges = true
উদ্দেশ্য-সি
london.tracksInfoWindowChanges = YES;
tracksInfoWindowChanges প্রপার্টিটি কখন সেট করবেন তা সিদ্ধান্ত নিতে, ইনফো উইন্ডোটি স্বয়ংক্রিয়ভাবে পুনরায় আঁকার সুবিধার বিপরীতে পারফরম্যান্সের বিষয়গুলো বিবেচনা করা উচিত। উদাহরণস্বরূপ:
- যদি আপনাকে ধারাবাহিকভাবে একাধিক পরিবর্তন করতে হয়, তাহলে আপনি প্রপার্টিটিকে প্রথমে
YESএবং তারপর আবারNOতে পরিবর্তন করতে পারেন। - যখন কোনো অ্যানিমেশন চলে বা কন্টেন্টগুলো অ্যাসিঙ্ক্রোনাসভাবে লোড হয়, তখন অ্যাকশনগুলো সম্পূর্ণ না হওয়া পর্যন্ত প্রপার্টিটি
YESএ সেট করে রাখা উচিত।
মার্কারের iconView প্রপার্টি ব্যবহার করার সময় বিবেচ্য বিষয়গুলোর জন্য নোটগুলোও দেখুন।
একটি তথ্য উইন্ডোর অবস্থান পরিবর্তন করা
একটি তথ্য উইন্ডো ডিভাইসের স্ক্রিনের সাপেক্ষে, এর সংশ্লিষ্ট মার্কারের ঠিক উপরে কেন্দ্রে অঙ্কিত হয়। আপনি infoWindowAnchor প্রপার্টি সেট করার মাধ্যমে মার্কারের সাপেক্ষে তথ্য উইন্ডোটির অবস্থান পরিবর্তন করতে পারেন। এই প্রপার্টিটি একটি CGPoint গ্রহণ করে, যা একটি (x,y) অফসেট হিসাবে সংজ্ঞায়িত, যেখানে x এবং y উভয়ের মান 0.0 থেকে 1.0-এর মধ্যে থাকে। ডিফল্ট অফসেট হলো (0.5, 0.0), অর্থাৎ, উপরের কেন্দ্র। একটি কাস্টম আইকনের সাথে তথ্য উইন্ডোটিকে সারিবদ্ধ করার জন্য infoWindowAnchor অফসেট সেট করা উপযোগী।
সুইফট
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
উদ্দেশ্য-সি
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
তথ্য উইন্ডোতে ইভেন্ট পরিচালনা
আপনি নিম্নলিখিত তথ্য উইন্ডো ইভেন্টগুলি শুনতে পারেন:
mapView:markerInfoWindow:— যখন কোনো মার্কার নির্বাচিত হতে চলেছে, তখন এটি কল করা হয়। ঐচ্ছিকভাবে, মার্কারের জন্য ব্যবহার করার উদ্দেশ্যে একটি কাস্টম ইনফো উইন্ডো (UIViewহিসেবে) রিটার্ন করা যেতে পারে। আরও তথ্যের জন্য নিচে কাস্টম ইনফো উইন্ডো দেখুন।mapView:markerInfoContents:— যখনmapView:markerInfoWindowমান nil রিটার্ন করে, তখন এটি কল করা হয়।mapView:didCloseInfoWindowOfMarker:— মার্কারের তথ্য উইন্ডো বন্ধ করা হলে এটি কল করা হয়।mapView:didLongPressInfoWindowOfMarker:— কোনো মার্কারের তথ্য উইন্ডোতে দীর্ঘক্ষণ চাপ দেওয়ার পর এটি কল করা হয়।
ইভেন্ট শোনার জন্য, আপনাকে অবশ্যই GMSMapViewDelegate প্রোটোকলটি ইমপ্লিমেন্ট করতে হবে। ইভেন্ট সংক্রান্ত নির্দেশিকা এবং GMSMapViewDelegate এর মেথডগুলোর তালিকা দেখুন।
গিটহাবে এমন কিছু নমুনা রয়েছে যা দেখায় কিভাবে ইনফো উইন্ডো ইভেন্টগুলো পরিচালনা করতে হয়:
কাস্টম তথ্য উইন্ডো
কাস্টম ইনফো উইন্ডোর লেআউট নির্ধারণ করার জন্য UIView এর একটি সাবক্লাস তৈরি করে ইনফো উইন্ডোর বিষয়বস্তু কাস্টমাইজ করুন। সেই সাবক্লাসের মধ্যে, আপনার পছন্দমতো ভিউটি সংজ্ঞায়িত করুন। উদাহরণস্বরূপ, আপনি টাইটেল এবং স্নিপেট টেক্সট দেখানোর জন্য কাস্টম UILabel ইনস্ট্যান্স এবং ইনফো উইন্ডোতে প্রদর্শিত ছবি যোগ করার জন্য UIImageView ইনস্ট্যান্সের মতো অন্যান্য ভিউ ব্যবহার করতে পারেন।
নিশ্চিত করুন যে আপনার ViewController GMSIndoorDisplayDelegate প্রোটোকলটি ইমপ্লিমেন্ট করে এবং `mapView:markerInfoWindow: ` ইভেন্টের জন্য একটি লিসেনার সংজ্ঞায়িত করে। এই ইভেন্ট লিসেনারটি তখন কল করা হয় যখন একটি মার্কার নির্বাচিত হতে চলেছে, এবং এটি আপনাকে মার্কার দ্বারা ব্যবহৃত কাস্টম ইনফো উইন্ডোটি সংজ্ঞায়িত করার জন্য আপনার কাস্টম UIView ক্লাসের একটি ইনস্ট্যান্স রিটার্ন করতে দেয়।
নিচের ছবিগুলোতে একটি ডিফল্ট ইনফো উইন্ডো, কাস্টমাইজ করা বিষয়বস্তুসহ একটি ইনফো উইন্ডো এবং কাস্টমাইজ করা ফ্রেম ও ব্যাকগ্রাউন্ডসহ একটি ইনফো উইন্ডো দেখানো হয়েছে।

iOS-এর জন্য Maps SDK-এর সাথে GitHub- এ দেওয়া কোড স্যাম্পলগুলোতে কাস্টম ইনফো উইন্ডোর নমুনা অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, MarkerInfoWindowViewController.m (Objective-C) বা MarkerInfoWindowViewController.swift (Swift)-এর সংজ্ঞা দেখুন।
এই স্যাম্পলগুলো ডাউনলোড ও রান করার তথ্যের জন্য কোড স্যাম্পলগুলো দেখুন।