ইভেন্ট

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

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: এর মতো পদ্ধতির মাধ্যমে অথবা সরাসরি মানচিত্রের স্তর আপডেট করার মাধ্যমে। এটি 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) তাদের সংশ্লিষ্ট আইকন সহ বেস ম্যাপে প্রদর্শিত হয়। POI-তে পার্ক, স্কুল, সরকারি ভবন এবং আরও অনেক কিছুর পাশাপাশি দোকান, রেস্তোরাঁ এবং হোটেলের মতো ব্যবসায়িক POI অন্তর্ভুক্ত থাকে।

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

অন্যান্য ইভেন্ট

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