आस-पास की जगहों की जानकारी (नया)

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript वेब सेवा
यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

'आस-पास की जगहों की जानकारी (नया वर्शन)' अनुरोध में, खोजे जाने वाले क्षेत्र को इनपुट के तौर पर लिया जाता है. इसे एक सर्कल के तौर पर दिखाया जाता है. इसे सर्कल के केंद्र बिंदु के अक्षांश और देशांतर निर्देशांकों और मीटर में रेडियस के हिसाब से तय किया जाता है. अनुरोध के जवाब में, खोज के लिए तय की गई जगह में मौजूद मिलती-जुलती जगहों की सूची मिलती है. हर जगह को GMSPlace ऑब्जेक्ट के तौर पर दिखाया जाता है.

डिफ़ॉल्ट रूप से, जवाब में खोज के दायरे में आने वाली सभी तरह की जगहें शामिल होती हैं. आपके पास यह विकल्प होता है कि जवाब को फ़िल्टर किया जा सके. इसके लिए, जगहों के टाइप की एक सूची तय करें. इससे यह तय किया जा सकेगा कि जवाब में किन जगहों को शामिल करना है और किन जगहों को शामिल नहीं करना है. उदाहरण के लिए, जवाब में सिर्फ़ "रेस्तरां", "बेकरी", और "कैफ़े" टाइप की जगहों को शामिल करने के लिए कहा जा सकता है. इसके अलावा, "स्कूल" टाइप की सभी जगहों को बाहर रखने के लिए कहा जा सकता है.

आस-पास की जगहों की जानकारी (नई) के लिए किए गए अनुरोध

GMSPlacesClient searchNearbyWithRequest: को कॉल करके, आस-पास की जगहों की जानकारी खोजने का अनुरोध करें. इसके लिए, GMSPlaceSearchNearbyRequest ऑब्जेक्ट पास करें. यह ऑब्जेक्ट, अनुरोध के पैरामीटर और कॉलबैक का तरीका तय करता है. साथ ही, GMSPlaceSearchNearbyResultCallback टाइप का होता है, ताकि जवाब को हैंडल किया जा सके.

GMSPlaceSearchNearbyRequest ऑब्जेक्ट, अनुरोध के लिए ज़रूरी और ज़रूरी नहीं पैरामीटर के बारे में बताता है. इनमें ये ज़रूरी पैरामीटर शामिल हैं:

  • GMSPlace ऑब्जेक्ट में दिखाई जाने वाली फ़ील्ड की सूची. इसे फ़ील्ड मास्क भी कहा जाता है. इसे GMSPlaceProperty ने तय किया है. अगर फ़ील्ड की सूची में कम से कम एक फ़ील्ड नहीं दिया जाता है या फ़ील्ड की सूची को छोड़ दिया जाता है, तो कॉल में गड़बड़ी दिखती है.
  • जगह के हिसाब से खोज करने की सुविधा, इसका मतलब है कि खोज के दायरे को तय करने वाला सर्कल.

आस-पास की जगहों को खोजने के इस उदाहरण में बताया गया है कि खोज के नतीजों में मौजूद हर GMSPlace ऑब्जेक्ट के लिए, जवाब वाले GMSPlace ऑब्जेक्ट में जगह का नाम (GMSPlacePropertyName) और जगह के कोऑर्डिनेट (GMSPlacePropertyCoordinate) शामिल हैं. यह जवाब को फ़िल्टर करके, सिर्फ़ "रेस्टोरेंट" और "कैफ़े" टाइप की जगहों की जानकारी दिखाता है.

Places Swift SDK

let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500)
let searchNearbyRequest = SearchNearbyRequest(
  locationRestriction: restriction,
  placeProperties: [ .name, .coordinate],
  includedTypes: [ .restaurant, .cafe ],
)
switch await placesClient.searchNearby(with: searchNearbyRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

Swift

// Array to hold the places in the response
var placeResults: [GMSPlace] = []

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500)

// Specify the fields to return in the GMSPlace object for each place in the response.
let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue}

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties)
let includedTypes = ["restaurant", "cafe"]
request.includedTypes = includedTypes

let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  placeResults = results
}

GMSPlacesClient.shared().searchNearby(with: request, callback: callback)

Objective-C

// Array to hold the places in the response
_placeResults = [NSArray array];

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500);

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc]
  initWithLocationRestriction:circularLocation
              placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]];

// Set the place types to filter on.
NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ];
request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes];

[_placesClient searchNearbyWithRequest:request
  callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) {
    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    } else {
        // Get list of places.
        _placeResults = places;
    }
  }
];

आस-पास की खोज के जवाब

Nearby Search API, मैच करने वाली जगहों की जानकारी को GMSPlace ऑब्जेक्ट के तौर पर दिखाता है. इसमें मैच करने वाली हर जगह के लिए एक GMSPlace ऑब्जेक्ट होता है.

खुला है

GMSPlacesClient ऑब्जेक्ट में एक मेंबर फ़ंक्शन होता है, जिसे isOpenWithRequest (Swift में isOpenRequest और GooglePlacesSwift में isPlaceOpenRequest) कहा जाता है. यह फ़ंक्शन एक ऐसा जवाब देता है जिससे पता चलता है कि कॉल में बताए गए समय के हिसाब से, जगह फ़िलहाल खुली है या नहीं.

यह तरीका, GMSPlaceIsOpenWithRequest टाइप का एक आर्ग्युमेंट लेता है. इसमें ये शामिल हैं:

  • GMSPlace ऑब्जेक्ट या जगह का आईडी बताने वाली स्ट्रिंग. ज़रूरी फ़ील्ड के साथ Place ऑब्जेक्ट बनाने के बारे में ज़्यादा जानने के लिए, जगह की जानकारी देखें.
  • यह एक वैकल्पिक NSDate (Obj-C) या Date (Swift) ऑब्जेक्ट है. इससे यह तय किया जाता है कि आपको किस समय की जांच करनी है. अगर कोई समय नहीं दिया गया है, तो डिफ़ॉल्ट रूप से मौजूदा समय का इस्तेमाल किया जाता है.
  • जवाब को मैनेज करने का GMSPlaceOpenStatusResponseCallback तरीका.
  • >

GMSPlaceIsOpenWithRequest तरीके के लिए, GMSPlace ऑब्जेक्ट में इन फ़ील्ड को सेट करना ज़रूरी है:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

अगर ये फ़ील्ड, Place ऑब्जेक्ट में नहीं दिए गए हैं या आपने कोई जगह का आईडी पास किया है, तो यह तरीका उन्हें फ़ेच करने के लिए GMSPlacesClient GMSFetchPlaceRequest: का इस्तेमाल करता है.

isOpenWithRequest जवाब

isOpenWithRequest, GMSPlaceIsOpenResponse ऑब्जेक्ट दिखाता है. इसमें status नाम की एक बूलियन वैल्यू होती है. इससे पता चलता है कि कारोबार खुला है, बंद है या उसका स्टेटस पता नहीं है.

भाषा अगर खुला है, तो वैल्यू कारोबार बंद होने पर वैल्यू स्थिति की जानकारी न होने पर वैल्यू
Places Swift true false nil
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown

isOpenWithRequest के लिए बिलिंग

  • GMSPlacePropertyUTCOffsetMinutes और GMSPlacePropertyBusinessStatus फ़ील्ड के लिए, बुनियादी डेटा एसकेयू के तहत शुल्क लिया जाता है. खुलने के समय के बाकी घंटे, जगह की जानकारी देने वाले Enterprise SKU के तहत शुल्क लिया जाता है.
  • अगर आपके GMSPlace ऑब्जेक्ट में, पिछले अनुरोध से ये फ़ील्ड पहले से ही मौजूद हैं, तो आपसे फिर से शुल्क नहीं लिया जाएगा.

उदाहरण: GMSPlaceIsOpenWithRequest का अनुरोध करो

यहां दिए गए उदाहरण में, किसी मौजूदा GMSPlace ऑब्जेक्ट में GMSPlaceIsOpenWithRequest को शुरू करने का तरीका बताया गया है.

Places Swift SDK

        let isOpenRequest = IsPlaceOpenRequest(place: place)
        switch await placesClient.isPlaceOpen(with: isOpenRequest) {
          case .success(let isOpenResponse):
            switch isOpenResponse.status {
              case true:
                // Handle open
              case false:
                // Handle closed
              case nil:
                // Handle unknown
          case .failure(let placesError):
            // Handle error
        }
        

Swift

    let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil)
      GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in
        if let error = error {
          // Handle Error
        }
        switch response.status {
          case .open:
            // Handle open
          case .closed:
            // Handle closed
          case .unknown:
            // Handle unknown
        }
      }
        

Objective-C

          GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil];

          [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) {
            if (error) {
              // Handle error
            }

            switch (response.status) {
              case GMSPlaceOpenStatusOpen:
                // Handle open
              case GMSPlaceOpenStatusClosed:
                // Handle closed
              case GMSPlaceOpenStatusUnknown:
                // Handle unknown
            }
          }];
          

ज़रूरी पैरामीटर

खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, GMSPlaceSearchNearbyRequest ऑब्जेक्ट का इस्तेमाल करें.

  • फ़ील्ड की सूची

    जगह की जानकारी का अनुरोध करते समय, आपको उस डेटा के बारे में बताना होगा जिसे जगह के लिए GMSPlace ऑब्जेक्ट में फ़ील्ड मास्क के तौर पर दिखाना है. फ़ील्ड मास्क तय करने के लिए, GMSPlaceProperty से GMSPlaceSearchNearbyRequest ऑब्जेक्ट तक वैल्यू का एक कलेक्शन पास करें. फ़ील्ड मास्किंग, डिज़ाइन करने का एक अच्छा तरीका है. इससे यह पक्का किया जा सकता है कि आपने बिना वजह डेटा का अनुरोध न किया हो. इससे, प्रोसेसिंग में लगने वाले समय और बिलिंग के शुल्कों से बचा जा सकता है.

    इनमें से एक या उससे ज़्यादा फ़ील्ड डालें:

    यहां दिए गए उदाहरण में, दो फ़ील्ड वैल्यू की सूची पास की गई है. इससे यह पता चलता है कि अनुरोध से मिले GMSPlace ऑब्जेक्ट में name और placeID फ़ील्ड शामिल हैं:

    Places Swift SDK

    // Specify the place data types to return.
    let fields: [PlaceProperty] = [.placeID, .displayName]
            

    Swift

    // Specify the place data types to return.
    let fields: [GMSPlaceProperty] = [.placeID, .name]
            

    Objective-C

    // Specify the place data types to return.
    NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
            
  • locationRestriction

    GMSPlaceLocationRestriction ऑब्जेक्ट. यह ऑब्जेक्ट, खोज के लिए क्षेत्र तय करता है. इसे एक सर्कल के तौर पर दिखाया जाता है. इसे केंद्र बिंदु और मीटर में रेडियस के हिसाब से तय किया जाता है. रेडियस, 0.0 और 50000.0 के बीच होना चाहिए. हालांकि, इन दोनों में से भी कोई संख्या हो सकती है. डिफ़ॉल्ट रेडियस 0.0 है. आपको अपने अनुरोध में इसे 0.0 से ज़्यादा पर सेट करना होगा.

ज़रूरी नहीं पैरामीटर

खोज के लिए, वैकल्पिक पैरामीटर तय करने के लिए GMSPlaceSearchNearbyRequest ऑब्जेक्ट का इस्तेमाल करें.

  • includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes

    इस विकल्प की मदद से, टेबल A में मौजूद टाइप की सूची तय की जा सकती है. इसका इस्तेमाल खोज के नतीजों को फ़िल्टर करने के लिए किया जाता है. पाबंदी के हर टाइप की कैटगरी में, ज़्यादा से ज़्यादा 50 टाइप दिए जा सकते हैं.

    किसी जगह के लिए, टेबल A में दिए गए टाइप में से सिर्फ़ एक प्राइमरी टाइप चुना जा सकता है. उदाहरण के लिए, प्राइमरी टाइप "mexican_restaurant" या "steak_house" हो सकता है. किसी जगह के मुख्य टाइप के हिसाब से नतीजों को फ़िल्टर करने के लिए, includedPrimaryTypes और excludedPrimaryTypes का इस्तेमाल करें.

    किसी जगह के लिए, उससे जुड़ी टेबल A में मौजूद एक से ज़्यादा टाइप वैल्यू भी हो सकती हैं. उदाहरण के लिए, किसी रेस्टोरेंट के ये टाइप हो सकते हैं: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". किसी जगह से जुड़े टाइप की सूची में मौजूद नतीजों को फ़िल्टर करने के लिए, includedTypes और excludedTypes का इस्तेमाल करें.

    जब "restaurant" या "hotel" जैसे सामान्य प्राइमरी टाइप के बारे में बताया जाता है, तो जवाब में ऐसे स्थान शामिल हो सकते हैं जिनका प्राइमरी टाइप, बताए गए प्राइमरी टाइप से ज़्यादा सटीक हो. उदाहरण के लिए, आपने "restaurant" को शामिल करने के लिए कहा है. इसके बाद, जवाब में "restaurant" प्राइमरी टाइप वाली जगहें शामिल हो सकती हैं. हालांकि, जवाब में "chinese_restaurant" या "seafood_restaurant" जैसे ज़्यादा खास प्राइमरी टाइप वाली जगहें भी शामिल हो सकती हैं.

    अगर किसी खोज में कई तरह की पाबंदियां लगाई गई हैं, तो सिर्फ़ वे जगहें दिखाई जाती हैं जो सभी पाबंदियों को पूरा करती हैं. उदाहरण के लिए, अगर आपने {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]} को चुना है, तो खोज के नतीजों में दिखने वाली जगहों पर "restaurant" से जुड़ी सेवाएं मिलती हैं. हालांकि, ये मुख्य रूप से "steak_house" के तौर पर काम नहीं करती हैं.

    includedTypes

    टेबल A में मौजूद जगहों के टाइप की सूची, जिन्हें खोजना है. अगर इस पैरामीटर को शामिल नहीं किया जाता है, तो सभी तरह की जगहों की जानकारी मिलती है.

    excludedTypes

    टेबल A में मौजूद जगहों के टाइप की सूची, जिसे खोज के नतीजों से बाहर रखना है.

    अगर अनुरोध में includedTypes (जैसे कि "school") और excludedTypes (जैसे कि "primary_school") दोनों को शामिल किया जाता है, तो जवाब में वे जगहें शामिल होती हैं जिन्हें "school" के तौर पर कैटगरी में रखा गया है, लेकिन "primary_school" के तौर पर नहीं. जवाब में ऐसी जगहें शामिल हैं जो includedTypes में से कम से कम एक से मैच करती हैं और excludedTypes में से किसी से भी मैच नहीं करती हैं.

    अगर कोई टाइप दोनों में दिखता है, जैसे कि includedTypes और excludedTypes, तो INVALID_REQUEST गड़बड़ी दिखती है.

    includedPrimaryTypes

    खोज में शामिल करने के लिए, टेबल A में मौजूद मुख्य जगहों के टाइप की सूची.

    excludedPrimaryTypes

    टेबल A में मौजूद मुख्य जगहों के टाइप की सूची, जिन्हें खोज के नतीजों में शामिल नहीं करना है.

    अगर प्राइमरी टाइप में कोई टकराव होता है, जैसे कि कोई टाइप includedPrimaryTypes और excludedPrimaryTypes, दोनों में दिखता है, तो INVALID_ARGUMENT गड़बड़ी दिखती है.

  • maxResultCount

    जगह के नतीजों की ज़्यादा से ज़्यादा संख्या तय करता है. यह 1 और 20 (डिफ़ॉल्ट) के बीच होना चाहिए.

  • rankPreference

    इस्तेमाल की जाने वाली रैंकिंग का टाइप. अगर इस पैरामीटर को शामिल नहीं किया जाता है, तो नतीजों को लोकप्रियता के हिसाब से रैंक किया जाता है. यह इनमें से कोई एक हो सकता है:

    • .popularity (डिफ़ॉल्ट) नतीजों को उनकी लोकप्रियता के आधार पर क्रम से लगाता है.
    • .distance नतीजों को, बताई गई जगह से उनकी दूरी के हिसाब से बढ़ते क्रम में क्रमबद्ध करता है.
  • regionCode

    जवाब को फ़ॉर्मैट करने के लिए इस्तेमाल किया गया क्षेत्र कोड. इसे दो वर्णों वाले CLDR कोड वैल्यू के तौर पर तय किया जाता है. इसकी कोई डिफ़ॉल्ट वैल्यू नहीं होती.

    अगर जवाब में मौजूद formattedAddress फ़ील्ड में दिए गए देश का नाम, regionCode में दिए गए देश के नाम से मेल खाता है, तो formattedAddress से देश का कोड हटा दिया जाता है. इस पैरामीटर का adrFormatAddress पर कोई असर नहीं पड़ता. इसमें हमेशा देश का नाम शामिल होता है. साथ ही, इसका shortFormattedAddress पर भी कोई असर नहीं पड़ता. इसमें देश का नाम कभी शामिल नहीं होता.

    ज़्यादातर CLDR कोड, ISO 3166-1 कोड के जैसे ही होते हैं. हालांकि, कुछ मामलों में ये अलग होते हैं. उदाहरण के लिए, यूनाइटेड किंगडम का ccTLD "uk" (.co.uk) है, जबकि इसका ISO 3166-1 कोड "gb" है. तकनीकी तौर पर, यह "ग्रेट ब्रिटेन और उत्तरी आयरलैंड का यूनाइटेड किंगडम" के लिए है. लागू कानून के आधार पर, इस पैरामीटर से नतीजों पर असर पड़ सकता है.

अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाना

अगर आपका ऐप्लिकेशन, GMSPlacesClient से मिली जानकारी दिखाता है, तो उसे ज़रूरी एट्रिब्यूशन भी दिखाने होंगे. जैसे, फ़ोटो और समीक्षाएं.

उदाहरण के लिए, GMSPlacesClient ऑब्जेक्ट की reviews प्रॉपर्टी में ज़्यादा से ज़्यादा पांच GMSPlaceReview ऑब्जेक्ट का कलेक्शन होता है. हर GMSPlaceReview ऑब्जेक्ट में एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं. अगर आपने अपने ऐप्लिकेशन में समीक्षा दिखाई है, तो आपको एट्रिब्यूशन या लेखक का एट्रिब्यूशन भी दिखाना होगा.

ज़्यादा जानकारी के लिए, एट्रिब्यूशन के बारे में दस्तावेज़ देखें.