তথ্য উইন্ডোগুলি

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

একটি তথ্য উইন্ডো যা মার্কারের উপরে দেখা যাচ্ছে।

ব্যবহারকারী কোনও মার্কারের উপর ট্যাপ করলে, তথ্য উইন্ডো আপনাকে ব্যবহারকারীকে তথ্য দেখানোর অনুমতি দেয়।

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

তথ্য উইন্ডোর কন্টেন্ট মার্কারের title এবং snippet প্রপার্টি দ্বারা সংজ্ঞায়িত করা হয়। title এবং snippet প্রপার্টি ফাঁকা বা nil হলে, মার্কার ক্লিক করলে কোনও তথ্য উইন্ডো দেখায় না।

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

অতিরিক্ত টেক্সট বা ছবি যোগ করতে কাস্টম তথ্য উইন্ডো তৈরি করুন। কাস্টম info উইন্ডো আপনাকে পপ-আপের চেহারা সম্পূর্ণভাবে নিয়ন্ত্রণ করতে দেয়।

তথ্য উইন্ডো যোগ করুন

নিম্নলিখিত স্নিপেট একটি সাধারণ মার্কার তৈরি করে, যার মধ্যে তথ্য উইন্ডোর টেক্সটের জন্য শুধুমাত্র একটি শীর্ষক থাকে।

Swift

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.map = mapView
      

Objective-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.title = @"London";
london.map = mapView;
      

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

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
      

তথ্যের উইন্ডো দেখান/লুকান

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

  • মার্কারের নাম দেখাতে selectedMarker সেট করুন।
  • এটি লুকাতে selectedMarker-কে nil-এ সেট করুন।

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
// Show marker
mapView.selectedMarker = london
// Hide marker
mapView.selectedMarker = nil
      

Objective-C

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।

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

tracksInfoWindowChanges প্রপার্টি কখন সেট করতে হবে তা ঠিক করতে, আপনাকে অটোমেটিক তথ্য উইন্ডো আবার আঁকার সুবিধার সাথে পারফর্ম্যান্সের বিষয়টি তুলনা করে দেখতে হবে। যেমন:

  • আপনার যদি একাধিক পরিবর্তন করার থাকে, তাহলে আপনি প্রপার্টি YES-এ পরিবর্তন করতে পারেন তারপর আবার NO-এ ফিরে যেতে পারেন।
  • কোনও অ্যানিমেশন চলাকালীন বা কন্টেন্ট অ্যাসিঙ্ক্রোনাসভাবে লোড হওয়ার সময়, অ্যাকশন সম্পূর্ণ না হওয়া পর্যন্ত আপনাকে প্রপার্টি YES-এ সেট করে রাখতে হবে।

মার্কারের iconView প্রপার্টি ব্যবহার করার সময় বিবেচনা করার জন্য নোট দেখুন।

তথ্য উইন্ডোর অবস্থান পরিবর্তন করা

ডিভাইসের স্ক্রিনের সাপেক্ষে একটি তথ্য উইন্ডো আঁকা হয়, যা এর সাথে যুক্ত মার্কারের উপরে কেন্দ্র করে থাকে। infoWindowAnchor প্রপার্টি সেট করে আপনি মার্কারের সাপেক্ষে তথ্য উইন্ডোর পজিশন পরিবর্তন করতে পারবেন। এই প্রপার্টি CGPoint গ্রহণ করে, যা (x,y) অফসেট হিসেবে সংজ্ঞায়িত যেখানে x ও y উভয়ের রেঞ্জ ০.০ থেকে ১.০-এর মধ্যে। ডিফল্ট অফসেট হল (০.৫, ০.০), অর্থাৎ, কেন্দ্র শীর্ষ। infoWindowAnchor অফসেট সেট করা কাস্টম আইকনের সাথে তথ্য উইন্ডো সারিবদ্ধ করার জন্য উপযোগী।

Swift

london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5)
london.icon = UIImage(named: "house")
london.map = mapView
      

Objective-C

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-এ পদ্ধতির তালিকা দেখুন।

GitHub -এ এমন স্যাম্পেল আছে যা দেখায় যে কীভাবে তথ্য উইন্ডো ইভেন্ট ম্যানেজ করতে হয়:

কাস্টম তথ্য উইন্ডো

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

আপনার ViewController যাতে GMSIndoorDisplayDelegate প্রোটোকল প্রয়োগ করে এবং mapView:markerInfoWindow: ইভেন্টের জন্য লিসেনার নির্ধারণ করে তা নিশ্চিত করুন। এই ইভেন্ট লিসেনারকে কল করা হয় যখন কোনও মার্কার বেছে নেওয়া হতে চলেছে এবং এটি আপনাকে কাস্টম UIView ক্লাসের একটি ইনস্ট্যান্স ফিরিয়ে দিতে দেয় যাতে মার্কারের মাধ্যমে ব্যবহার করা কাস্টম তথ্য উইন্ডোকে সংজ্ঞায়িত করা যায়।

নিচের ছবিতে ডিফল্ট তথ্য উইন্ডো, কাস্টমাইজ করা কন্টেন্ট সহ তথ্য উইন্ডো এবং কাস্টমাইজ করা ফ্রেম ও ব্যাকগ্রাউন্ড সহ তথ্য উইন্ডো দেখানো হয়েছে।

তথ্য উইন্ডোর তুলনা

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

এইসব স্যাম্পেল ডাউনলোড ও রান করা সংক্রান্ত তথ্যের জন্য কোড স্যাম্পেল দেখুন।