इवेंट

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

iOS के लिए मैप SDK का इस्तेमाल करके, आप मैप, जैसे कि कैमरे में बदलाव के इवेंट या मार्कर टैप इवेंट.

परिचय

इवेंट सुनने के लिए, आपको GMSMapViewDelegate प्रोटोकॉल. आम तौर पर, यह प्रोटोकॉल, मैप को दिखाने वाले व्यू कंट्रोलर पर होता है. नीचे एक उदाहरण दिया गया है:

Swift

import GoogleMaps

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

Objective-C

@import GoogleMaps;

@interface Events : UIViewController <GMSMapViewDelegate>

@end
      

GMSMapView बन जाने पर, आप अपने व्यू के लिए इसका डेलिगेट सेट कर सकते हैं कंट्रोलर. GMSMapViewDelegate सिर्फ़ वैकल्पिक तरीके उपलब्ध कराता है. सुनने के लिए आपको उसका तरीका लागू करना होगा.

Swift

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

Objective-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: पर कॉल करने के बाद दिखता है. इसने बीच में मौजूद कैमरे की पोज़िशन.

  • आखिर में, कैमरे की पोज़िशन सेट होने के बाद, mapView:idleAtCameraPosition: शुरू होता है GMSMapView पर कुछ समय से इस्तेमाल में नहीं है. साथ ही, कैमरे की सही जगह तय करता है. इस समय, सभी ऐनिमेशन और जेस्चर बंद हो गए हैं.

    ऐप्लिकेशन इस इवेंट का इस्तेमाल मार्कर या अन्य कॉन्टेंट को GMSMapView पर दिखाया जा रहा हो, न कि उदाहरण के लिए, हर बार कैमरा बदलने पर, कॉन्टेंट को फिर से लोड करने में मदद मिलती है.

उदाहरण के लिए, कोई ऐप्लिकेशन एक जगह से दूसरी जगह ले जाने पर GMSMapView को साफ़ कर सकता है और कैमरे को जिस पोज़िशन पर रखना है उसे रिवर्स जियोकोड करें.

Swift

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

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

कारोबारों और अन्य पसंदीदा जगहों पर इवेंट

डिफ़ॉल्ट रूप से, बुनियादी मैप पर लोकप्रिय जगहें (पीओआई), उनसे जुड़े आइकॉन के साथ दिखती हैं. लोकप्रिय जगहों में पार्क, स्कूल, सरकारी इमारतें वगैरह शामिल हैं. साथ ही, कारोबार की लोकप्रिय जगहें, जैसे कि दुकानें, रेस्टोरेंट, और होटल भी हैं.

लोकप्रिय जगह पर क्लिक इवेंट का जवाब दिया जा सकता है. इसके लिए गाइड देखें कारोबार और अन्य लोकप्रिय जगहें.

अन्य इवेंट

GMSMapViewDelegate पर तरीकों की पूरी सूची के बारे में जानने के लिए, देखें रेफ़रंस गाइड.