Nearby खोज (नया)

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

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

Nearby Search (नए) के अनुरोध

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

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

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

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

Swift

// Array to hold the places in the response
placeResults = [];

// 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
  }
  self.placeResults = results
}

GMSPlacesClient.shared().searchNearbyWithRequest(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) {
      [weakSelf showErrorWithMessage:error.localizedDescription];
    } else {
      // Get list of places.
      _placeResults = places;

    }
  }
];

GooglePlacesSwift

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 ऑब्जेक्ट होता है.

रिस्पॉन्स में मौजूद GMSPlace ऑब्जेक्ट के साथ-साथ, डेटा फ़ील्ड में ये सदस्य फ़ंक्शन भी शामिल होते हैं:

  • isOpen यह हिसाब लगाता है कि कोई जगह, दिए गए समय पर खुली है या नहीं.
  • isOpenAtDate यह हिसाब लगाता है कि कोई जगह, दी गई तारीख को खुली या बंद हुई या नहीं.

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

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

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

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

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

    • नीचे दिए गए फ़ील्ड, आस-पास खोज (बेसिक) की SKU को ट्रिगर करते हैं:

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

    • नीचे दिए गए फ़ील्ड, आस-पास खोज (बेहतर) SKU को ट्रिगर करते हैं:

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

    • नीचे दिए गए फ़ील्ड, आस-पास खोज (पसंदीदा) SKU को ट्रिगर करते हैं:

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

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

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

    GooglePlacesSwift

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

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

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

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

  • शामिल किए गए प्रकार/शामिल नहीं किए गए प्रकार, शामिल प्राइमरी टाइप/शामिल नहीं किए गए प्राइमरीटाइप

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

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

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

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

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

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

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