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

प्लैटफ़ॉर्म चुनें: 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 ऑब्जेक्ट तक वैल्यू का एक कलेक्शन पास करें. फ़ील्ड मास्किंग, डिज़ाइन करने का एक अच्छा तरीका है. इससे यह पक्का किया जा सकता है कि आपने बिना वजह डेटा का अनुरोध न किया हो. इससे, प्रोसेसिंग में लगने वाले समय और बिलिंग के शुल्कों को कम करने में मदद मिलती है.

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

    • इन फ़ील्ड से Nearby Search Pro SKU ट्रिगर होता है:

      GMSPlacePropertyAddressComponents
      GMSPlacePropertyBusinessStatus
      GMSPlacePropertyCoordinate
      GMSPlacePropertyFormattedAddress
      GMSPlacePropertyName
      GMSPlacePropertyIconBackgroundColor
      GMSPlacePropertyIconImageURL
      GMSPlacePropertyPhotos
      GMSPlacePropertyPlaceID
      GMSPlacePropertyPlusCode
      GMSPlacePropertyTypes
      GMSPlacePropertyUTCOffsetMinutes
      GMSPlacePropertyViewport
      GMSPlacePropertyWheelchairAccessibleEntrance

    • इन फ़ील्ड से Nearby Search Enterprise SKU ट्रिगर होता है:

      GMSPlacePropertyCurrentOpeningHours
      GMSPlacePropertySecondaryOpeningHours
      GMSPlacePropertyPhoneNumber
      GMSPlacePropertyPriceLevel
      GMSPlacePropertyRating
      GMSPlacePropertyOpeningHours
      GMSPlacePropertyUserRatingsTotal
      GMSPlacePropertyWebsite

    • इन फ़ील्ड से Nearby Search Enterprise Plus SKU ट्रिगर होता है:

      GMSPlacePropertyCurbsidePickup
      GMSPlacePropertyDelivery
      GMSPlacePropertyDineIn
      GMSPlacePropertyEditorialSummary
      GMSPlacePropertyReservable
      GMSPlacePropertyReviews
      GMSPlacePropertyServesBeer
      GMSPlacePropertyServesBreakfast
      GMSPlacePropertyServesBrunch
      GMSPlacePropertyServesDinner
      GMSPlacePropertyServesLunch
      GMSPlacePropertyServesVegetarianFood
      GMSPlacePropertyServesWine
      GMSPlacePropertyTakeout

    इस उदाहरण में, दो फ़ील्ड वैल्यू की सूची पास की गई है. इससे यह पता चलता है कि अनुरोध से मिले 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 ऑब्जेक्ट में एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं. अगर आपने अपने ऐप्लिकेशन में समीक्षा दिखाई है, तो आपको एट्रिब्यूशन या लेखक का एट्रिब्यूशन भी दिखाना होगा.

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