মার্কার মানচিত্রে একক অবস্থান নির্দেশ করে।
ডিফল্টরূপে, চিহ্নিতকারীরা একটি আদর্শ আইকন ব্যবহার করে যার সাধারণ Google মানচিত্রের চেহারা এবং অনুভূতি রয়েছে। আপনি যদি আপনার মার্কারকে কাস্টমাইজ করতে চান, আপনি ডিফল্ট মার্কারটির রঙ পরিবর্তন করতে পারেন, বা একটি কাস্টম আইকন দিয়ে মার্কার চিত্রটি প্রতিস্থাপন করতে পারেন, বা মার্কারের অন্যান্য বৈশিষ্ট্য পরিবর্তন করতে পারেন।
একটি মার্কারে একটি ক্লিক ইভেন্টের প্রতিক্রিয়া হিসাবে, আপনি একটি তথ্য উইন্ডো খুলতে পারেন। একটি তথ্য উইন্ডো মার্কারের উপরে একটি ডায়ালগ উইন্ডোতে পাঠ্য বা চিত্র প্রদর্শন করে। আপনি পাঠ্য প্রদর্শনের জন্য একটি ডিফল্ট তথ্য উইন্ডো ব্যবহার করতে পারেন, অথবা সম্পূর্ণরূপে এর বিষয়বস্তু নিয়ন্ত্রণ করতে আপনার নিজস্ব কাস্টম তথ্য উইন্ডো তৈরি করতে পারেন।
একটি মার্কার যোগ করা হচ্ছে
একটি মার্কার যোগ করতে, একটি GMSMarker
অবজেক্ট তৈরি করুন যাতে একটি position
এবং title
অন্তর্ভুক্ত থাকে এবং এর map
সেট করুন।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি বিদ্যমান GMSMapView
অবজেক্টে একটি মার্কার যুক্ত করতে হয়। মার্কারটি স্থানাঙ্ক 10,10
এ তৈরি করা হয় এবং ক্লিক করার সময় একটি তথ্য উইন্ডোতে "হ্যালো ওয়ার্ল্ড" স্ট্রিংটি প্রদর্শন করে।
সুইফট
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10) let marker = GMSMarker(position: position) marker.title = "Hello World" marker.map = mapView
উদ্দেশ্য-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10); GMSMarker *marker = [GMSMarker markerWithPosition:position]; marker.title = @"Hello World"; marker.map = mapView;
আপনি marker.appearAnimation
প্রপার্টি সেট করে ম্যাপে নতুন মার্কার সংযোজন অ্যানিমেট করতে পারেন:
-
kGMSMarkerAnimationPop
যোগ করার সময় মার্কারটিকে তারgroundAnchor
থেকে পপ করার জন্য অ্যাঙ্কর। -
kGMSMarkerAnimationFadeIn
যোগ করার সময় মার্কার বিবর্ণ হয়ে যায়।
একটি মার্কার সরানো হচ্ছে
আপনি GMSMarker
map
বৈশিষ্ট্যকে nil
সেট করে মানচিত্র থেকে একটি মার্কার সরাতে পারেন। বিকল্পভাবে, আপনি GMSMapView
clear
পদ্ধতিতে কল করে বর্তমানে মানচিত্রের সমস্ত ওভারলে (মার্কার সহ) সরাতে পারেন।
সুইফট
let camera = GMSCameraPosition.camera( withLatitude: -33.8683, longitude: 151.2086, zoom: 6 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) // ... mapView.clear()
উদ্দেশ্য-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; // ... [mapView clear];
আপনি যদি একটি মার্কারকে মানচিত্রে যোগ করার পরে পরিবর্তন করতে চান তবে নিশ্চিত করুন যে আপনি GMSMarker
অবজেক্টটি ধরে রেখেছেন। আপনি এই বস্তুতে পরিবর্তন করে মার্কার পরিবর্তন করতে পারেন।
সুইফট
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10) let marker = GMSMarker(position: position) marker.map = mapView // ... marker.map = nil
উদ্দেশ্য-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(10, 10); GMSMarker *marker = [GMSMarker markerWithPosition:position]; marker.map = mapView; // ... marker.map = nil;
মার্কার রঙ পরিবর্তন
আপনি markerImageWithColor:
এর সাথে ডিফল্ট আইকনের একটি টিন্টেড সংস্করণের অনুরোধ করে এবং ফলস্বরূপ চিত্রটিকে GMSMarker
এর আইকন বৈশিষ্ট্যে পাস করে ডিফল্ট মার্কার চিত্রের রঙ কাস্টমাইজ করতে পারেন।
সুইফট
marker.icon = GMSMarker.markerImage(with: .black)
উদ্দেশ্য-C
marker.icon = [GMSMarker markerImageWithColor:[UIColor blackColor]];
মার্কার ইমেজ কাস্টমাইজ করা
আপনি যদি ডিফল্ট মার্কার ইমেজ পরিবর্তন করতে চান তাহলে আপনি মার্কার icon
বা iconView
প্রপার্টি ব্যবহার করে একটি কাস্টম আইকন সেট করতে পারেন। iconView
সেট করা থাকলে, API icon
বৈশিষ্ট্য উপেক্ষা করে।
মার্কার icon
বৈশিষ্ট্য ব্যবহার করে
নিম্নলিখিত স্নিপেটটি icon
সম্পত্তিতে একটি UIImage
হিসাবে প্রদত্ত একটি কাস্টম আইকন সহ একটি মার্কার তৈরি করে৷ আইকনটি লন্ডন, ইংল্যান্ডে কেন্দ্রীভূত। স্নিপেট অনুমান করে যে আপনার অ্যাপ্লিকেশনটিতে "house.png" নামে একটি চিত্র রয়েছে৷
সুইফট
let positionLondon = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: positionLondon) london.title = "London" london.icon = UIImage(named: "house") london.map = mapView
উদ্দেশ্য-C
CLLocationCoordinate2D positionLondon = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:positionLondon]; london.title = @"London"; london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
আপনি যদি একই চিত্রের সাথে একাধিক মার্কার তৈরি করেন তবে প্রতিটি মার্কারের জন্য UIImage
এর একই উদাহরণ ব্যবহার করুন। অনেকগুলি মার্কার প্রদর্শন করার সময় এটি আপনার অ্যাপ্লিকেশনের কর্মক্ষমতা উন্নত করতে সহায়তা করে।
এই ছবিতে একাধিক ফ্রেম থাকতে পারে। অতিরিক্তভাবে, alignmentRectInsets
বৈশিষ্ট্যকে সম্মান করা হয়, যেটি উপযোগী যদি একটি চিহ্নিতকারীর ছায়া বা অন্যান্য অব্যবহারযোগ্য অঞ্চল থাকে।
মার্কার এর iconView
বৈশিষ্ট্য ব্যবহার করে
নিচের স্নিপেটটি চিহ্নিতকারীর iconView
প্রপার্টি সেট করে একটি কাস্টম আইকন সহ একটি মার্কার তৈরি করে এবং মার্কারের রঙের পরিবর্তনকে অ্যানিমেট করে। স্নিপেট অনুমান করে যে আপনার অ্যাপ্লিকেশনটিতে "house.png" নামে একটি চিত্র রয়েছে৷
সুইফট
import CoreLocation import GoogleMaps class MarkerViewController: UIViewController, GMSMapViewDelegate { var mapView: GMSMapView! var london: GMSMarker? var londonView: UIImageView? override func viewDidLoad() { super.viewDidLoad() let camera = GMSCameraPosition.camera( withLatitude: 51.5, longitude: -0.127, zoom: 14 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) view = mapView mapView.delegate = self let house = UIImage(named: "House")!.withRenderingMode(.alwaysTemplate) let markerView = UIImageView(image: house) markerView.tintColor = .red londonView = markerView let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let marker = GMSMarker(position: position) marker.title = "London" marker.iconView = markerView marker.tracksViewChanges = true marker.map = mapView london = marker } func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) { UIView.animate(withDuration: 5.0, animations: { () -> Void in self.londonView?.tintColor = .blue }, completion: {(finished) in // Stop tracking view changes to allow CPU to idle. self.london?.tracksViewChanges = false }) } }
উদ্দেশ্য-C
@import CoreLocation; @import GoogleMaps; @interface MarkerViewController : UIViewController <GMSMapViewDelegate> @property (strong, nonatomic) GMSMapView *mapView; @end @implementation MarkerViewController { GMSMarker *_london; UIImageView *_londonView; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:51.5 longitude:-0.127 zoom:14]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; self.view = _mapView; _mapView.delegate = self; UIImage *house = [UIImage imageNamed:@"House"]; house = [house imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; _londonView = [[UIImageView alloc] initWithImage:house]; _londonView.tintColor = [UIColor redColor]; CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); _london = [GMSMarker markerWithPosition:position]; _london.title = @"London"; _london.iconView = _londonView; _london.tracksViewChanges = YES; _london.map = self.mapView; } - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position { [UIView animateWithDuration:5.0 animations:^{ self->_londonView.tintColor = [UIColor blueColor]; } completion:^(BOOL finished) { // Stop tracking view changes to allow CPU to idle. self->_london.tracksViewChanges = NO; }]; } @end
যেহেতু iconView
একটি UIView
গ্রহণ করে, আপনি আপনার মার্কারগুলিকে সংজ্ঞায়িত করে স্ট্যান্ডার্ড UI নিয়ন্ত্রণগুলির একটি শ্রেণীবিন্যাস রাখতে পারেন, প্রতিটি ভিউতে অ্যানিমেশন ক্ষমতার মানক সেট রয়েছে৷ আপনি মার্কার আকার, রঙ এবং আলফা স্তরের পরিবর্তনগুলি অন্তর্ভুক্ত করতে পারেন, সেইসাথে নির্বিচারে রূপান্তরগুলি প্রয়োগ করতে পারেন৷ iconView
প্রপার্টি frame
এবং center
ব্যতীত UIView
এর সমস্ত অ্যানিমেটেবল বৈশিষ্ট্যের অ্যানিমেশন সমর্থন করে।
iconView
ব্যবহার করার সময় অনুগ্রহ করে নিম্নলিখিত বিবেচনাগুলি নোট করুন:
- যখন
tracksViewChanges
YES
সেট করা থাকে তখনUIView
রিসোর্সের চাহিদা করতে পারে, যার ফলে ব্যাটারি ব্যবহার বেড়ে যেতে পারে। তুলনায়, একটি একক ফ্রেমUIImage
স্থির এবং পুনরায় রেন্ডার করার প্রয়োজন নেই। - কিছু ডিভাইস ম্যাপ রেন্ডার করার জন্য সংগ্রাম করতে পারে যদি আপনার স্ক্রিনে অনেকগুলি মার্কার থাকে এবং প্রতিটি মার্কারের নিজস্ব
UIView
থাকে এবং সমস্ত চিহ্নিতকারী একই সময়ে পরিবর্তনগুলি ট্র্যাক করছে৷ - একটি
iconView
ব্যবহারকারীর মিথস্ক্রিয়ায় সাড়া দেয় না, কারণ এটি দৃশ্যের একটি স্ন্যাপশট। - ভিউটি এমনভাবে আচরণ করে যেন
clipsToBounds
এর প্রকৃত মান নির্বিশেষেYES
তে সেট করা আছে। আপনি সীমার বাইরে কাজ করে এমন রূপান্তরগুলি প্রয়োগ করতে পারেন, তবে আপনি যে বস্তুটি আঁকবেন তা অবশ্যই বস্তুর সীমার মধ্যে হতে হবে। সমস্ত রূপান্তর/পরিবর্তন নিরীক্ষণ এবং প্রয়োগ করা হয়। সংক্ষেপে: সাবভিউ অবশ্যই ভিউয়ের মধ্যে থাকতে হবে।
tracksViewChanges
সম্পত্তি কখন সেট করতে হবে তা নির্ধারণ করতে, চিহ্নিতকারীকে স্বয়ংক্রিয়ভাবে পুনরায় আঁকার সুবিধার বিপরীতে আপনার কর্মক্ষমতা বিবেচনা করা উচিত। যেমন:
- আপনার যদি একাধিক পরিবর্তন করতে হয়, তাহলে আপনি সম্পত্তিটি
YES
তে পরিবর্তন করতে পারেন তারপরNO
তে ফিরে যেতে পারেন। - যখন একটি অ্যানিমেশন চলছে বা বিষয়বস্তুগুলি অ্যাসিঙ্ক্রোনাসভাবে লোড করা হচ্ছে, তখন অ্যাকশনগুলি সম্পূর্ণ না হওয়া পর্যন্ত আপনার সম্পত্তিটি
YES
সেট করা উচিত।
চিহ্নিতকারীর অস্বচ্ছতা পরিবর্তন করা হচ্ছে
আপনি একটি মার্কারের অস্বচ্ছতা তার opacity
বৈশিষ্ট্য দ্বারা নিয়ন্ত্রণ করতে পারেন। আপনার 0.0 এবং 1.0 এর মধ্যে একটি ফ্লোট হিসাবে অস্বচ্ছতা নির্দিষ্ট করা উচিত, যেখানে 0 সম্পূর্ণ স্বচ্ছ এবং 1 সম্পূর্ণ অস্বচ্ছ।
সুইফট
marker.opacity = 0.6
উদ্দেশ্য-C
marker.opacity = 0.6;
আপনি GMSMarkerLayer
ব্যবহার করে [কোর অ্যানিমেশন] কোর অ্যানিমেশন দিয়ে মার্কার অপাসিটি অ্যানিমেট করতে পারেন।
একটি মার্কার সমতল করা
মার্কার আইকনগুলি সাধারণত মানচিত্রের পৃষ্ঠের পরিবর্তে ডিভাইসের স্ক্রিনের বিপরীতে আঁকা হয়, তাই মানচিত্রটি ঘোরানো, কাত করা বা জুম করা অগত্যা মার্কারের অভিযোজন পরিবর্তন করে না।
আপনি পৃথিবীর বিরুদ্ধে সমতল হতে একটি মার্কারের অভিযোজন সেট করতে পারেন। মানচিত্রটি ঘোরানো হলে ফ্ল্যাট মার্কারগুলি ঘোরে এবং মানচিত্রটি কাত হলে দৃষ্টিভঙ্গি পরিবর্তন করে৷ নিয়মিত মার্কারগুলির মতো, মানচিত্রটি জুম ইন বা আউট করার সময় ফ্ল্যাট মার্কারগুলি তাদের আকার ধরে রাখে।
চিহ্নিতকারীর অভিযোজন পরিবর্তন করতে, চিহ্নিতকারীর flat
বৈশিষ্ট্যটি YES
বা true
সেট করুন।
সুইফট
let positionLondon = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let londonMarker = GMSMarker(position: positionLondon) londonMarker.isFlat = true londonMarker.map = mapView
উদ্দেশ্য-C
CLLocationCoordinate2D positionLondon = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *londonMarker = [GMSMarker markerWithPosition:positionLondon]; londonMarker.flat = YES; londonMarker.map = mapView;
একটি মার্কার ঘোরানো
আপনি rotation
বৈশিষ্ট্য সেট করে একটি মার্কারকে এর অ্যাঙ্কর পয়েন্টের চারপাশে ঘোরাতে পারেন। একটি CLLocationDegrees
প্রকার হিসাবে ঘূর্ণন নির্দিষ্ট করুন, ডিফল্ট অবস্থান থেকে ঘড়ির কাঁটার দিকে ডিগ্রী পরিমাপ করা হয়। মার্কারটি মানচিত্রে সমতল হলে, ডিফল্ট অবস্থানটি উত্তর।
নিম্নলিখিত উদাহরণটি মার্কারটিকে 90° ঘোরায়। groundAnchor
প্রপার্টি 0.5,0.5
এ সেট করার ফলে মার্কারের ভিত্তির পরিবর্তে এর কেন্দ্রের চারপাশে ঘোরানো হয়।
সুইফট
let degrees = 90.0 londonMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5) londonMarker.rotation = degrees londonMarker.map = mapView
উদ্দেশ্য-C
CLLocationDegrees degrees = 90; londonMarker.groundAnchor = CGPointMake(0.5, 0.5); londonMarker.rotation = degrees; londonMarker.map = mapView;
মার্কার ইভেন্ট হ্যান্ডলিং
আপনি ম্যাপে ঘটে যাওয়া ইভেন্টগুলি শুনতে পারেন, যেমন যখন একজন ব্যবহারকারী একটি মার্কার ট্যাপ করে। ইভেন্টগুলি শুনতে, আপনাকে অবশ্যই GMSMapViewDelegate
প্রোটোকল প্রয়োগ করতে হবে৷ নির্দিষ্ট মার্কার ইভেন্টগুলি কীভাবে পরিচালনা করবেন তা শিখতে মার্কার ইভেন্ট এবং অঙ্গভঙ্গি দেখুন। ইভেন্টের নির্দেশিকা GMSMapViewDelegate-এ পদ্ধতির একটি তালিকাও প্রদান করে। রাস্তার দৃশ্য ইভেন্টের জন্য, GMSPanoramaViewDelegate
দেখুন।