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
पर तरीकों की पूरी सूची के बारे में जानने के लिए, देखें
रेफ़रंस गाइड.