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

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

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

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

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

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

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

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

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

// 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)
// 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;
    }
  }
];
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
}

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

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

खुले होने की स्थिति देखना

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

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

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

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

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

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

isOpenWithRequest response

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

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

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

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

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

नीचे दिए गए उदाहरण में, किसी मौजूदा GMSPlace ऑब्जेक्ट में GMSPlaceIsOpenWithRequest को शुरू करने का तरीका बताया गया है.
SwiftObjective-CGooglePlacesSwift
    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
        }
      }
        
          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
            }
          }];
          
          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
          }
          

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

खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, 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

    • ये फ़ील्ड, आस-पास की जगहों की जानकारी दिखाने वाले Enterprise Plus वर्शन के SKU को ट्रिगर करते हैं:

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

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

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

    GMSPlaceLocationRestriction ऑब्जेक्ट, जो सर्कल के तौर पर तय किए गए इलाके को खोजने के लिए इस्तेमाल किया जाता है. इस इलाके को सेंटर पॉइंट और मीटर में त्रिज्या के हिसाब से तय किया जाता है. त्रिज्या 0.0 से 50, 000.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 कोड से मिलते-जुलते होते हैं. हालांकि, कुछ कोड अलग होते हैं. उदाहरण के लिए, यूनाइटेड किंगडम का सीसीटीएलडी "uk" (.co.uk) है, जबकि उसका आईएसओ 3166-1 कोड "gb" है. तकनीकी तौर पर, यह कोड "ग्रेट ब्रिटेन और उत्तरी आयरलैंड के यूनाइटेड किंगडम" की इकाई के लिए है. लागू कानून के आधार पर, इस पैरामीटर से नतीजों पर असर पड़ सकता है.

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

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

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

ज़्यादा जानकारी के लिए, क्रेडिट से जुड़ा दस्तावेज़ देखें.