iOS এর জন্য Maps SDK ব্যবহার করে, আপনি ম্যাপে ঘটে যাওয়া ইভেন্টগুলি শুনতে পারেন, যেমন ক্যামেরা পরিবর্তন ইভেন্ট বা মার্কার ট্যাপ ইভেন্ট৷
ভূমিকা
ইভেন্টগুলি শুনতে, আপনাকে অবশ্যই GMSMapViewDelegate
প্রোটোকল প্রয়োগ করতে হবে৷ সাধারণত, আপনি ভিউ কন্ট্রোলারে এই প্রোটোকলটি প্রয়োগ করেন যা মানচিত্র প্রদর্শন করে। নীচে একটি উদাহরণ:
সুইফট
import GoogleMaps class Events: UIViewController, GMSMapViewDelegate { // ... }
উদ্দেশ্য-C
@import GoogleMaps; @interface Events : UIViewController <GMSMapViewDelegate> @end
যখন GMSMapView
তৈরি করা হয়, আপনি এটির প্রতিনিধি আপনার ভিউ কন্ট্রোলারে সেট করতে পারেন। GMSMapViewDelegate
শুধুমাত্র ঐচ্ছিক পদ্ধতি প্রদান করে। কোনো বিশেষ ঘটনা শোনার জন্য আপনাকে অবশ্যই প্রাসঙ্গিক পদ্ধতি প্রয়োগ করতে হবে।
সুইফট
override func loadView() { super.loadView() let camera = GMSCameraPosition.camera( withLatitude: 1.285, longitude: 103.848, zoom: 12 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.delegate = self self.view = mapView } // MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { print("You tapped at \(coordinate.latitude), \(coordinate.longitude)") }
উদ্দেশ্য-C
- (void)loadView { [super loadView]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.delegate = self; self.view = mapView; } #pragma mark - GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate { NSLog(@"You tapped at %f,%f", coordinate.latitude, coordinate.longitude); }
ক্যামেরা অবস্থান
GMSMapViewDelegate
ব্যবহার করে, আপনি মানচিত্র রেন্ডার করতে ব্যবহৃত ক্যামেরা অবস্থানের পরিবর্তন শুনতে পারেন। তিনটি স্বতন্ত্র ঘটনা আছে।
mapView:willMove:
নির্দেশ করে যে ক্যামেরার অবস্থান পরিবর্তন হতে চলেছে। যদিgesture
যুক্তিটিYES
তে সেট করা হয়, তাহলে এটি একটি ব্যবহারকারীরGMSMapView
এ একটি প্রাকৃতিক অঙ্গভঙ্গি সম্পাদন করার কারণে, যেমন একটি প্যান বা কাত। অন্যথায়,NO
ইঙ্গিত করে যে এটি একটি প্রোগ্রাম্যাটিক পরিবর্তনের অংশ - উদাহরণস্বরূপ, পদ্ধতির মাধ্যমে যেমনanimateToCameraPosition:
বা সরাসরি মানচিত্রের স্তর আপডেট করা। এটিNO
হতে পারে যদি কোনো ব্যবহারকারী আমার অবস্থান বা কম্পাস বোতামে ট্যাপ করে থাকে, যা ক্যামেরা পরিবর্তন করে এমন অ্যানিমেশন তৈরি করে।mapView:idleAtCameraPosition:
চালু করার আগে এই পদ্ধতিটি বেশ কয়েকবার কল করা যেতে পারে, যদিও এটি সাধারণত তখনই ঘটে যখন অ্যানিমেশন এবং অঙ্গভঙ্গি একই সময়ে ঘটে - একটি অঙ্গভঙ্গি বর্তমান অ্যানিমেশনকে বাতিল করবে, উদাহরণস্বরূপ, এবং কল করবেmapView:willMove:
একটি সেকেন্ড সময়mapView:didChangeCameraPosition:
একটি অঙ্গভঙ্গি বা অ্যানিমেশনের সময় বারবার কল করা হয়, সবসময়mapView:willMove:
এ কল করার পরে। এটি মধ্যবর্তী ক্যামেরা অবস্থান পাস করা হয়.অবশেষে,
GMSMapView
এ ক্যামেরার অবস্থান নিষ্ক্রিয় হয়ে গেলে, এবং প্রাসঙ্গিক ক্যামেরা অবস্থান নির্দিষ্ট করার পরেmapView:idleAtCameraPosition:
চালু করা হয়। এই মুহুর্তে, সমস্ত অ্যানিমেশন এবং অঙ্গভঙ্গি বন্ধ হয়ে গেছে।অ্যাপ্লিকেশানগুলি এই ইভেন্টটিকে ব্যবহার করতে পারে মার্কারগুলির একটি রিফ্রেশ বা
GMSMapView
এ প্রদর্শিত অন্যান্য সামগ্রীর ট্রিগার করতে, উদাহরণস্বরূপ, প্রতিটি ক্যামেরা পরিবর্তনে সামগ্রী পুনরায় লোড করার পরিবর্তে৷
উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন GMSMapView
মুভ করার সময় সাফ করতে পারে এবং তারপরে ক্যামেরাটি যে অবস্থানে বিশ্রামে আসে সেটিকে জিওকোড রিভার্স করতে পারে।
সুইফট
let geocoder = GMSGeocoder() func mapView(_ mapView: GMSMapView, willMove gesture: Bool) { mapView.clear() } func mapView(_ mapView: GMSMapView, idleAt cameraPosition: GMSCameraPosition) { geocoder.reverseGeocodeCoordinate(cameraPosition.target) { (response, error) in guard error == nil else { return } if let result = response?.firstResult() { let marker = GMSMarker() marker.position = cameraPosition.target marker.title = result.lines?[0] marker.snippet = result.lines?[1] marker.map = mapView } } }
উদ্দেশ্য-C
GMSGeocoder *geocoder; - (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture { [mapView clear]; } - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)cameraPosition { id handler = ^(GMSReverseGeocodeResponse *response, NSError *error) { if (error != nil) { return; } GMSReverseGeocodeResult *result = response.firstResult; GMSMarker *marker = [GMSMarker markerWithPosition:cameraPosition.target]; marker.title = result.lines[0]; marker.snippet = result.lines[1]; marker.map = mapView; }; [geocoder reverseGeocodeCoordinate:cameraPosition.target completionHandler:handler]; }
ব্যবসা এবং আগ্রহের অন্যান্য পয়েন্টের ইভেন্ট
ডিফল্টরূপে, আগ্রহের পয়েন্টগুলি (POIs) তাদের সংশ্লিষ্ট আইকনগুলির সাথে বেস মানচিত্রে উপস্থিত হয়৷ POI গুলির মধ্যে পার্ক, স্কুল, সরকারি ভবন এবং আরও অনেক কিছুর পাশাপাশি ব্যবসায়িক POI যেমন দোকান, রেস্তোরাঁ এবং হোটেল অন্তর্ভুক্ত রয়েছে৷
আপনি একটি POI-তে ক্লিক ইভেন্টগুলিতে প্রতিক্রিয়া জানাতে পারেন। ব্যবসার নির্দেশিকা এবং অন্যান্য আগ্রহের পয়েন্ট দেখুন।
অন্যান্য ঘটনা
GMSMapViewDelegate
এ পদ্ধতির সম্পূর্ণ তালিকা সম্পর্কে জানতে, রেফারেন্স গাইড দেখুন।