ইভেন্ট

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

iOS-এর জন্য Maps SDK ব্যবহার করে, আপনি ম্যাপে ঘটা বিভিন্ন ইভেন্ট, যেমন ক্যামেরা পরিবর্তনের ইভেন্ট বা মার্কার ট্যাপ করার ইভেন্ট শুনতে পারেন।

ভূমিকা

ইভেন্ট শোনার জন্য, আপনাকে অবশ্যই GMSMapViewDelegate প্রোটোকলটি ইমপ্লিমেন্ট করতে হবে। সাধারণত, যে ভিউ কন্ট্রোলারটি ম্যাপ প্রদর্শন করে, সেখানেই এই প্রোটোকলটি ইমপ্লিমেন্ট করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:

সুইফট

import GoogleMaps

class Events: UIViewController, GMSMapViewDelegate {
  // ...
}
      

উদ্দেশ্য-সি

@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)")
}
      

উদ্দেশ্য-সি

- (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: এর মতো পদ্ধতির মাধ্যমে বা সরাসরি ম্যাপের লেয়ার আপডেট করার মাধ্যমে। যদি কোনো ব্যবহারকারী `My Location` বা কম্পাস বোতামে ট্যাপ করে থাকেন, যা ক্যামেরা পরিবর্তনকারী অ্যানিমেশন তৈরি করে, তাহলেও এটি 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
      }
    }
  }
      

উদ্দেশ্য-সি

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];
}
      

ব্যবসা ও অন্যান্য আকর্ষণীয় স্থান সম্পর্কিত অনুষ্ঠানসমূহ

ডিফল্টরূপে, আগ্রহের স্থানগুলো (পিওআই) তাদের সংশ্লিষ্ট আইকনসহ মূল মানচিত্রে প্রদর্শিত হয়। পিওআই-এর মধ্যে রয়েছে পার্ক, স্কুল, সরকারি ভবন এবং আরও অনেক কিছু, সেইসাথে দোকান, রেস্তোরাঁ ও হোটেলের মতো ব্যবসায়িক পিওআই-ও।

আপনি একটি POI-তে ক্লিক ইভেন্টের প্রতিক্রিয়া জানাতে পারেন। ব্যবসা প্রতিষ্ঠান এবং অন্যান্য দর্শনীয় স্থান সম্পর্কিত নির্দেশিকাটি দেখুন।

অন্যান্য অনুষ্ঠান

GMSMapViewDelegate এর মেথডগুলোর সম্পূর্ণ তালিকা সম্পর্কে জানতে, রেফারেন্স গাইডটি দেখুন।