এই পৃষ্ঠায় নিম্নলিখিত পরিষেবাগুলিতে কল করার জন্য স্থান API (নতুন) ক্লায়েন্ট লাইব্রেরিগুলি কীভাবে ব্যবহার করবেন তার উদাহরণ রয়েছে:
- স্থানের বিবরণ (নতুন)
- কাছাকাছি অনুসন্ধান (নতুন)
- পাঠ্য অনুসন্ধান (নতুন)
- স্বয়ংসম্পূর্ণ (নতুন)
- স্থানের ছবি (নতুন)
ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন
ইনস্টলেশন নির্দেশাবলীর জন্য স্থান API (নতুন) ক্লায়েন্ট লাইব্রেরি দেখুন।
প্রমাণীকরণ
আপনি যখন ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন, আপনি প্রমাণীকরণের জন্য অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র (ADC) ব্যবহার করেন। ADC সেট আপ সম্পর্কে তথ্যের জন্য, অ্যাপ্লিকেশন ডিফল্ট শংসাপত্রের জন্য প্রমাণপত্র সরবরাহ করুন দেখুন। ক্লায়েন্ট লাইব্রেরির সাথে ADC ব্যবহার সম্পর্কে তথ্যের জন্য, ক্লায়েন্ট লাইব্রেরি ব্যবহার করে প্রমাণীকরণ দেখুন।
আপনি ক্লায়েন্ট লাইব্রেরিতে প্রমাণীকরণ করতে API কী ব্যবহার করতে পারেন, উদাহরণস্বরূপ:
জাভা
// NoCredentialsProvider is used to tell the client library not to use ADC import com.google.api.gax.core.NoCredentialsProvider; ... // Set up the request headers Map<String, String> headers = new HashMap<>(); headers.put("x-goog-fieldmask", fieldMaskString); // Pass the API key using the x-goog-api-key header headers.put("x-goog-api-key", "API_Key"); HeaderProvider headerProvider = FixedHeaderProvider.create(headers); ... PlacesSettings placesSettings = PlacesSettings.newBuilder() .setHeaderProvider(headerProvider) // Tell the PlacesSettings builder not to use any standard credentials provider // This uses the API key and not ADC .setCredentialsProvider(NoCredentialsProvider.create()) .build(); // Create the client using the settings PlacesClient placesClient = PlacesClient.create(placesSettings);
যাও
placespb "cloud.google.com/go/maps/places/apiv1/placespb" "google.golang.org/api/option" // Import the option package when using an API key "google.golang.org/grpc/metadata" // Instantiates the Places client, passing the API key clientOpts := []option.ClientOption{option.WithAPIKey("API_KEY")} c, err := places.NewClient(ctx, clientOpts...)
নোডজেএস
// Instantiates the Places client, passing the API key const placesClient = new PlacesClient({ apiKey: "API_KEY", });
পাইথন
client = places_v1.PlacesAsyncClient( # Instantiates the Places client, passing the API key client_options={"api_key": "API_KEY"} )
.নেট
// Instantiates the Places client, passing the API key PlacesClientBuilder builder = new PlacesClientBuilder { ApiKey = "API_KEY" }; PlacesClient client = await builder.BuildAsync();
আপনি যখন আপনার অ্যাপ্লিকেশানগুলিতে API কীগুলি ব্যবহার করেন, তখন নিশ্চিত করুন যে সেগুলি স্টোরেজ এবং ট্রান্সমিশনের সময় সুরক্ষিত রাখা হয়েছে৷ আপনার API কী সর্বজনীনভাবে প্রকাশ করলে আপনার অ্যাকাউন্টে অপ্রত্যাশিত চার্জ হতে পারে। আরও তথ্যের জন্য, স্থান API এর সাথে API কী ব্যবহার করুন দেখুন।
এই পৃষ্ঠার উদাহরণগুলির জন্য, আপনি অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করেন।
উদাহরণ
স্থানের বিবরণ (নতুন)
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কীভাবে প্লেস ডিটেইলস কল করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল।
জাভা
import com.google.api.gax.rpc.FixedHeaderProvider; import com.google.api.gax.rpc.HeaderProvider; import com.google.maps.places.v1.GetPlaceRequest; import com.google.maps.places.v1.Place; import com.google.maps.places.v1.PlacesClient; import com.google.maps.places.v1.PlacesSettings; ... private static void PlaceDetails() { // Define the Place resource name String placeId = "ChIJaXQRs6lZwokRY6EFpJnhNNE"; String placeName = "places/" + placeId; // Set up the Field Mask headers Map<String, String> headers = new HashMap<>(); String fieldMaskString = "displayName,formattedAddress"; headers.put("x-goog-fieldmask", fieldMaskString); HeaderProvider headerProvider = FixedHeaderProvider.create(headers); try { // Build the settings object for the client PlacesSettings placesSettings = PlacesSettings.newBuilder() .setHeaderProvider(headerProvider) .build(); // Create the client using the settings. PlacesClient placesClient = PlacesClient.create(placesSettings); // Build the request GetPlaceRequest request = GetPlaceRequest.newBuilder() .setName(placeName) .build(); // Call Place Details and output the response to the console Place place = placesClient.getPlace(request); System.out.println(place); placesClient.close(); } catch (Exception e) { System.err.println("An error occurred: " + e.getMessage()); } }
যাও
package main import ( "context" "fmt" "log" "strings" places "cloud.google.com/go/maps/places/apiv1" placespb "cloud.google.com/go/maps/places/apiv1/placespb" "google.golang.org/grpc/metadata" ) func main() { ctx := context.Background() // Initialize the Places Client c, err := places.NewClient(ctx) if err != nil { log.Fatalf("NewClient: %v", err) } defer c.Close() // Define the Place ID and construct the resource name placeID := "ChIJaXQRs6lZwokRY6EFpJnhNNE" resourceName := "places/" + placeID // Define the fields you want to retrieve (FieldMask) fieldsToRequest := []string{ "displayName", "formattedAddress", } fieldMaskHeader := strings.Join(fieldsToRequest, ",") //Create the GetPlaceRequest req := &placespb.GetPlaceRequest{ Name: resourceName, } // Add the FieldMask header to the request context reqCtx := metadata.AppendToOutgoingContext(ctx, "x-goog-fieldmask", fieldMaskHeader) // Call GetPlace resp, err := c.GetPlace(reqCtx, req) if err != nil { log.Fatalf("GetPlace failed: %v", err) } // Process the response if resp.DisplayName != nil { fmt.Printf(" Display Name: %s (%s)\n", resp.DisplayName.Text, resp.DisplayName.LanguageCode) } fmt.Printf(" Address: %s\n", resp.FormattedAddress) }
নোডজেএস
const { PlacesClient } = require('@googlemaps/places').v1; // Define the Place ID const placeId = 'ChIJaXQRs6lZwokRY6EFpJnhNNE'; // Define the fields you want to retrieve (FieldMask) const fieldMask = 'displayName,formattedAddress'; async function getPlaceDetails() { // Instantiates the Places client const placesClient = new PlacesClient(); // Construct the resource name from the Place ID. const placeName = `places/${placeId}`; // Construct the request object. const request = { name: placeName, }; // Construct the call options, including the Field Mask header. const callOptions = { otherArgs: { headers: { 'X-Goog-FieldMask': fieldMask, }, }, }; // Call Place Details and output the response to the console const response = await placesClient.getPlace(request, callOptions); console.log(response); } getPlaceDetails();
পাইথন
from google.maps import places_v1 async def place_details(): client = places_v1.PlacesAsyncClient() # Build the request request = places_v1.GetPlaceRequest( name="places/ChIJaXQRs6lZwokRY6EFpJnhNNE", ) # Set the field mask fieldMask = "formattedAddress,displayName" # Make the request response = await client.get_place(request=request, metadata=[("x-goog-fieldmask",fieldMask)]) return response print(await place_details())
.নেট
using Google.Api.Gax.Grpc; using Google.Maps.Places.V1; ... private static async Task PlaceDetails() { PlacesClient client = await PlacesClient.CreateAsync(); // Define the Place resource name using the strongly-typed resource name class PlaceName placeName = PlaceName.FromPlace("ChIJaXQRs6lZwokRY6EFpJnhNNE"); // Build the request GetPlaceRequest request = new GetPlaceRequest { PlaceName = placeName }; // Define the Field Mask (which fields to return) string fieldMask = "formattedAddress,displayName"; CallSettings callSettings = CallSettings.FromHeader("X-Goog-FieldMask", fieldMask); // Call Place Details and output the response to the console Place response = await client.GetPlaceAsync(request, callSettings); Console.WriteLine(response); }
name
প্যারামিটার ব্যবহার করে প্লেস আইডি পাস করুন। অনুরোধ করার সময় FieldMask পাস করা হয়।
কাছাকাছি অনুসন্ধান (নতুন)
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কাছাকাছি অনুসন্ধানকে কীভাবে কল করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল।
জাভা
import com.google.api.gax.rpc.FixedHeaderProvider; import com.google.api.gax.rpc.HeaderProvider; import com.google.maps.places.v1.Circle; import com.google.maps.places.v1.PlacesClient; import com.google.maps.places.v1.PlacesSettings; import com.google.maps.places.v1.SearchNearbyRequest; import com.google.maps.places.v1.SearchNearbyResponse; import com.google.type.LatLng; ... private static void NearbySearch() { // Set search variables double latitude = 51.516177; double longitude = -0.127245; double radiusMeters = 1000.0; String placeType = "restaurant"; // Set up the Field Mask headers Map<String, String> headers = new HashMap<>(); String fieldMaskString = "places.displayName,places.formattedAddress,places.id"; headers.put("x-goog-fieldmask", fieldMaskString); HeaderProvider headerProvider = FixedHeaderProvider.create(headers); try { // Build the settings object for the client PlacesSettings placesSettings = PlacesSettings.newBuilder() .setHeaderProvider(headerProvider) .build(); // Create the client using the settings. PlacesClient placesClient = PlacesClient.create(placesSettings); LatLng centerPoint = LatLng.newBuilder() .setLatitude(latitude) .setLongitude(longitude) .build(); Circle circleArea = Circle.newBuilder() .setCenter(centerPoint) .setRadius(radiusMeters) .build(); // Create the location restriction using a circle SearchNearbyRequest.LocationRestriction locationRestriction = SearchNearbyRequest.LocationRestriction.newBuilder() .setCircle(circleArea) .build(); // Build the Nearby Search request SearchNearbyRequest request = SearchNearbyRequest.newBuilder() .addIncludedTypes(placeType) .setLocationRestriction(locationRestriction) .build(); // Call Nearby Search and output the response to the console SearchNearbyResponse response = placesClient.searchNearby(request); System.out.println(response); placesClient.close(); } catch (Exception e) { System.err.println("An error occurred: " + e.getMessage()); } }
যাও
package main import ( "context" "fmt" "log" "strings" places "cloud.google.com/go/maps/places/apiv1" placespb "cloud.google.com/go/maps/places/apiv1/placespb" "google.golang.org/genproto/googleapis/type/latlng" "google.golang.org/grpc/metadata" ) func main() { ctx := context.Background() // Initialize the Places Client c, err := places.NewClient(ctx) if err != nil { log.Fatalf("NewClient: %v", err) } defer c.Close() // Define the search parameters searchCenter := &latlng.LatLng{ Latitude: 51.516177, Longitude: -0.127245, } searchRadius := 1000.0 placeTypeToSearch := "restaurant" // Define the FieldMask you want returned for each place fieldsToRequest := []string{ "places.displayName", "places.formattedAddress", } fieldMaskHeader := strings.Join(fieldsToRequest, ",") // Create the SearchNearbyRequest req := &placespb.SearchNearbyRequest{ IncludedTypes: []string{placeTypeToSearch}, LocationRestriction: &placespb.SearchNearbyRequest_LocationRestriction{ Type: &placespb.SearchNearbyRequest_LocationRestriction_Circle{ Circle: &placespb.Circle{ Center: searchCenter, Radius: searchRadius, }, }, }, } // Add the FieldMask header to the request context reqCtx := metadata.AppendToOutgoingContext(ctx, "x-goog-fieldmask", fieldMaskHeader) // Call Nearby Search resp, err := c.SearchNearby(reqCtx, req) if err != nil { log.Fatalf("SearchNearby failed: %v", err) } // Process the response fmt.Printf("Found %d nearby %ss:\n", len(resp.Places), placeTypeToSearch) for i, place := range resp.Places { fmt.Printf("%d. %s\n", i+1, place.DisplayName.GetText()) fmt.Printf(" Address: %s\n", place.GetFormattedAddress()) fmt.Println("---") } }
নোডজেএস
const { PlacesClient } = require('@googlemaps/places').v1; // Coordinates for the center of the search area const latitude = 51.5119; const longitude = -0.1248; const radiusMeters = 1000.0; // Included type filter const includedTypes = ['restaurant']; // Define the fields you want to retrieve (FieldMask) const fieldMask = 'places.displayName,places.formattedAddress'; async function searchNearbyPlaces() { // Instantiates the Places client const placesClient = new PlacesClient(); const centerPoint = { latitude, longitude }; const circleArea = { center: centerPoint, radius: radiusMeters, }; // Create the location restriction object using a circle const locationRestriction = { circle: circleArea, }; // Construct the request object const request = { locationRestriction: locationRestriction, includedTypes: includedTypes, }; // Construct the call options, including the Field Mask header const callOptions = { otherArgs: { headers: { 'X-Goog-FieldMask': fieldMask, }, }, }; // Call Nearby Search and output the response to the console const [response] = await placesClient.searchNearby(request, callOptions); console.log(response); } searchNearbyPlaces();
পাইথন
from google.maps import places_v1 from google.type import latlng_pb2 async def nearby_search(): # Define the coordinates and radius lat = 51.516177 lng = -0.127245 radius_meters = 1000.0 # Create the LatLng object for the center center_point = latlng_pb2.LatLng(latitude=lat, longitude=lng) # Create the circle circle_area = places_v1.types.Circle( center=center_point, radius=radius_meters ) # Add the circle to the location restriction location_restriction = places_v1.SearchNearbyRequest.LocationRestriction( circle=circle_area ) client = places_v1.PlacesAsyncClient() # Build the request request = places_v1.SearchNearbyRequest( location_restriction=location_restriction, included_types=["restaurant"] ) # Set the field mask fieldMask = "places.formattedAddress,places.displayName" # Make the request response = await client.search_nearby(request=request, metadata=[("x-goog-fieldmask",fieldMask)]) return response print(await nearby_search())
.নেট
using Google.Api.Gax.Grpc; using Google.Maps.Places.V1; using Google.Type; ... private static async Task NearbySearch() { PlacesClient client = await PlacesClient.CreateAsync(); // Set search variables double latitude = 51.516177; double longitude = -0.127245; double radiusMeters = 1000.0; string placeType = "restaurant"; LatLng centerPoint = new LatLng { Latitude = latitude, Longitude = longitude }; Circle circleArea = new Circle { Center = centerPoint, Radius = radiusMeters }; // Create the location restriction using a circle SearchNearbyRequest.Types.LocationRestriction locationRestriction = new SearchNearbyRequest.Types.LocationRestriction { Circle = circleArea }; // Build the Nearby Search request SearchNearbyRequest request = new SearchNearbyRequest { IncludedTypes = { placeType }, LocationRestriction = locationRestriction, }; // Define the Field Mask using CallSettings string fieldsToFetch = "places.displayName,places.formattedAddress,places.id"; CallSettings callSettings = CallSettings.FromHeader("X-Goog-FieldMask", fieldsToFetch); // Call Nearby Search and output the response to the console SearchNearbyResponse searchResponse = await client.SearchNearbyAsync(request, callSettings); Console.WriteLine(searchResponse); }
অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক এবং ব্যাসার্ধ ব্যবহার করে একটি সার্কেল অবস্থান সীমাবদ্ধতা সংজ্ঞায়িত করুন। উদাহরণের অনুরোধটি তৈরি করার সময়, রেস্টুরেন্টের একটি অন্তর্ভুক্ত প্রকার ফিল্টারের পাশাপাশি অবস্থানের সীমাবদ্ধতা ব্যবহার করুন। অনুরোধ করার সময় FieldMask পাস করা হয়।
পাঠ্য অনুসন্ধান (নতুন)
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কিভাবে টেক্সট সার্চ কল করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল।
জাভা
import com.google.api.gax.rpc.FixedHeaderProvider; import com.google.api.gax.rpc.HeaderProvider; import com.google.maps.places.v1.Circle; import com.google.maps.places.v1.PlacesClient; import com.google.maps.places.v1.PlacesSettings; import com.google.maps.places.v1.PriceLevel; import com.google.maps.places.v1.SearchTextRequest; import com.google.maps.places.v1.SearchTextResponse; import com.google.type.LatLng; ... private static void TextSearch() { // Set search variables String searchQuery = "restaurants with outdoor seating"; double latitude = 51.516177; double longitude = -0.127245; double radiusMeters = 1000.0; double minPlaceRating = 4.0; ListdesiredPriceLevels = Arrays.asList( PriceLevel.PRICE_LEVEL_MODERATE, PriceLevel.PRICE_LEVEL_EXPENSIVE ); boolean requireOpenNow = true; // Set up the Field Mask headers Map<String, String> headers = new HashMap<>(); String fieldMaskString = "places.displayName,places.formattedAddress,places.rating,places.priceLevel"; headers.put("x-goog-fieldmask", fieldMaskString); HeaderProvider headerProvider = FixedHeaderProvider.create(headers); try { // Build the settings object for the client PlacesSettings placesSettings = PlacesSettings.newBuilder() .setHeaderProvider(headerProvider) .build(); // Create the client using the settings. PlacesClient placesClient = PlacesClient.create(placesSettings); LatLng centerPoint = LatLng.newBuilder() .setLatitude(latitude) .setLongitude(longitude) .build(); Circle circleArea = Circle.newBuilder() .setCenter(centerPoint) .setRadius(radiusMeters) .build(); // Create the location bias using a circle SearchTextRequest.LocationBias locationBias = SearchTextRequest.LocationBias.newBuilder() .setCircle(circleArea) .build(); // Build the Text Search request SearchTextRequest request = SearchTextRequest.newBuilder() .setTextQuery(searchQuery) .setLocationBias(locationBias) .setMinRating(minPlaceRating) .setOpenNow(requireOpenNow) .addAllPriceLevels(desiredPriceLevels) .build(); // Call Text Search and output the response to the console SearchTextResponse response = placesClient.searchText(request); System.out.println(response); placesClient.close(); } catch (Exception e) { System.err.println("An error occurred: " + e.getMessage()); } }
যাও
package main import ( "context" "fmt" "log" "strings" places "cloud.google.com/go/maps/places/apiv1" placespb "cloud.google.com/go/maps/places/apiv1/placespb" "google.golang.org/genproto/googleapis/type/latlng" "google.golang.org/grpc/metadata" ) func main() { ctx := context.Background() // Initialize the Places Client c, err := places.NewClient(ctx) if err != nil { log.Fatalf("NewClient: %v", err) } defer c.Close() // Define the location bias parameters lat := 51.516177 lng := -0.127245 radiusMeters := 1000.0 centerPoint := &latlng.LatLng{ Latitude: lat, Longitude: lng, } circleArea := &placespb.Circle{ Center: centerPoint, Radius: radiusMeters, } // Create the location bias. locationBias := &placespb.SearchTextRequest_LocationBias{ Type: &placespb.SearchTextRequest_LocationBias_Circle{ Circle: circleArea, }, } // Define other search parameters searchQuery := "restaurants with outdoor seating" minPlaceRating := 4.0 shouldBeOpenNow := true requestedPriceLevels := []placespb.PriceLevel{ placespb.PriceLevel_PRICE_LEVEL_MODERATE, placespb.PriceLevel_PRICE_LEVEL_EXPENSIVE, } // Define the FieldMask you want returned fieldsToRequest := []string{ "places.displayName", "places.formattedAddress", } fieldMaskHeader := strings.Join(fieldsToRequest, ",") // Create the SearchTextRequest req := &placespb.SearchTextRequest{ TextQuery: searchQuery, LocationBias: locationBias, MinRating: minPlaceRating, OpenNow: shouldBeOpenNow, PriceLevels: requestedPriceLevels, } // Add the FieldMask header to the request context reqCtx := metadata.AppendToOutgoingContext(ctx, "x-goog-fieldmask", fieldMaskHeader) // Call the SearchText API resp, err := c.SearchText(reqCtx, req) if err != nil { log.Fatalf("SearchText failed: %v", err) } // Process the response fmt.Printf("Found %d results for '%s' near (%.4f, %.4f) with rating >= %.1f, open now, and moderate/expensive price:\n", len(resp.Places), searchQuery, lat, lng, minPlaceRating) for i, place := range resp.Places { fmt.Printf("%d. %s\n", i+1, place.DisplayName.GetText()) fmt.Printf(" Address: %s\n", place.GetFormattedAddress()) fmt.Println("---") } }
নোডজেএস
const { PlacesClient } = require('@googlemaps/places').v1; // Import the full protos object to access enums const { google } = require('@googlemaps/places/build/protos/protos'); // Adjust path if needed based on actual install // Access the enum using its full proto path const PriceLevel = google.maps.places.v1.PriceLevel; // Coordinates and radius for the location bias const latitude = 51.5119; const longitude = -0.1248; const radiusMeters = 1000.0; // 1 kilometer radius // Search query and filters const textQuery = 'restaurants with outdoor seating'; const minRating = 4.0; const priceLevels = [ PriceLevel.PRICE_LEVEL_MODERATE, PriceLevel.PRICE_LEVEL_EXPENSIVE, ]; // Define the fields you want to retrieve (FieldMask) const fieldMask = 'places.displayName,places.formattedAddress'; async function searchPlacesByText() { // Instantiates the Places client const placesClient = new PlacesClient(); const centerPoint = { latitude, longitude }; const circleArea = { center: centerPoint, radius: radiusMeters, }; // Create the location bias object using a circle const locationBias = { circle: circleArea, }; // Construct the request object const request = { textQuery: textQuery, locationBias: locationBias, minRating: minRating, openNow: true, priceLevels: priceLevels, }; // Construct the call options, including the Field Mask header const callOptions = { otherArgs: { headers: { 'X-Goog-FieldMask': fieldMask, }, }, }; // Call Text Search and output the response to the console const [response] = await placesClient.searchText(request, callOptions); console.log(response); } searchPlacesByText();
পাইথন
from google.maps import places_v1 from google.type import latlng_pb2 async def text_search(): # Coordinates and radius for the location bias lat = 51.516177 lng = -0.127245 radius_meters = 1000.0 # Create the LatLng object for the center center_point = latlng_pb2.LatLng(latitude=lat, longitude=lng) # Create the Circle object circle_area = places_v1.types.Circle( center=center_point, radius=radius_meters ) # Create the location bias circle location_bias = places_v1.SearchTextRequest.LocationBias( circle=circle_area ) # Define the search query and other parameters search_query = "restaurants with outdoor seating" min_place_rating = 4.0 client = places_v1.PlacesAsyncClient() # Build the request request = places_v1.SearchTextRequest( text_query=search_query, location_bias=location_bias, min_rating=min_place_rating, open_now=True, price_levels=[ places_v1.types.PriceLevel.PRICE_LEVEL_MODERATE, places_v1.types.PriceLevel.PRICE_LEVEL_EXPENSIVE ] ) # Set the field mask fieldMask = "places.formattedAddress,places.displayName" # Make the request response = await client.search_text(request=request, metadata=[("x-goog-fieldmask",fieldMask)]) return response print(await text_search())
.নেট
using Google.Api.Gax.Grpc; using Google.Maps.Places.V1; using Google.Type; ... private static async Task TextSearch() { PlacesClient client = await PlacesClient.CreateAsync(); // Set search variables string searchQuery = "restaurants with outdoor seating"; double latitude = 51.516177; double longitude = -0.127245; double radiusMeters = 1000.0; double minPlaceRating = 4.0; ListdesiredPriceLevels = new List { PriceLevel.Moderate, PriceLevel.Expensive }; bool requireOpenNow = true; LatLng centerPoint = new LatLng { Latitude = latitude, Longitude = longitude }; Circle circleArea = new Circle { Center = centerPoint, Radius = radiusMeters }; // Create the location bias using a circle SearchTextRequest.Types.LocationBias locationBias = new SearchTextRequest.Types.LocationBias { Circle = circleArea }; // Build the Text Search request SearchTextRequest request = new SearchTextRequest { TextQuery = searchQuery, LocationBias = locationBias, MinRating = minPlaceRating, OpenNow = requireOpenNow, }; request.PriceLevels.AddRange(desiredPriceLevels); // Define the Field Mask using CallSettings string fieldsToFetch = "places.displayName,places.formattedAddress,places.rating,places.priceLevel"; CallSettings callSettings = CallSettings.FromHeader("X-Goog-FieldMask", fieldsToFetch); // Call Text Search and output the response to the console SearchTextResponse searchResponse = await client.SearchTextAsync(request, callSettings); Console.WriteLine(searchResponse); }
অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক এবং একটি ব্যাসার্ধ ব্যবহার করে একটি সার্কেল অবজেক্ট তৈরি করে একটি অবস্থান পক্ষপাত সংজ্ঞায়িত করুন। সার্কেল অবজেক্টকে রিকোয়েস্ট অবজেক্টে পাস করুন, অন্যান্য API প্যারামিটারের পাশাপাশি:
অনুরোধ করার সময় FieldMask পাস করা হয়।
স্বয়ংসম্পূর্ণ
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কিভাবে স্বয়ংসম্পূর্ণ কল করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল।
জাভা
import com.google.maps.places.v1.AutocompletePlacesRequest; import com.google.maps.places.v1.AutocompletePlacesResponse; import com.google.maps.places.v1.Circle; import com.google.maps.places.v1.PlacesClient; import com.google.type.LatLng; ... private static void Autocomplete() { // Set search variables String userInput = "Google Central St Giles"; double biasLatitude = 51.516177; double biasLongitude = -0.127245; double biasRadiusMeters = 5000.0; String language = "en-GB"; String region = "GB"; // Generate a session token for this Autocomplete session String sessionToken = UUID.randomUUID().toString(); // Use try-with-resources for the client try (PlacesClient placesClient = PlacesClient.create()) { LatLng biasCenterPoint = LatLng.newBuilder() .setLatitude(biasLatitude) .setLongitude(biasLongitude) .build(); Circle biasCircleArea = Circle.newBuilder() .setCenter(biasCenterPoint) .setRadius(biasRadiusMeters) .build(); // Create the location bias using a circle AutocompletePlacesRequest.LocationBias locationBias = AutocompletePlacesRequest.LocationBias.newBuilder() .setCircle(biasCircleArea) .build(); // Build the Autocomplete request AutocompletePlacesRequest request = AutocompletePlacesRequest.newBuilder() .setInput(userInput) .setLocationBias(locationBias) .setLanguageCode(language) .setRegionCode(region) .setSessionToken(sessionToken) .build(); // Call Autocomplete and output the response to the console AutocompletePlacesResponse response = placesClient.autocompletePlaces(request); System.out.println(response); } catch (Exception e) { System.err.println("An error occurred: " + e.getMessage()); } }
যাও
package main import ( "context" "fmt" "log" places "cloud.google.com/go/maps/places/apiv1" placespb "cloud.google.com/go/maps/places/apiv1/placespb" "github.com/google/uuid" "google.golang.org/genproto/googleapis/type/latlng" ) func main() { ctx := context.Background() // Initialize the Places Client c, err := places.NewClient(ctx) if err != nil { log.Fatalf("NewClient: %v", err) } defer c.Close() // Define Location Bias parameters biasLat := 51.516177 biasLng := -0.127245 biasRadiusMeters := 5000.0 biasCenterPoint := &latlng.LatLng{ Latitude: biasLat, Longitude: biasLng, } biasCircleArea := &placespb.Circle{ Center: biasCenterPoint, Radius: biasRadiusMeters, } // Create the location bias struct locationBias := &placespb.AutocompletePlacesRequest_LocationBias{ Type: &placespb.AutocompletePlacesRequest_LocationBias_Circle{ Circle: biasCircleArea, }, } // Define other Autocomplete parameters userInput := "Google Central St Giles" language := "en-GB" region := "GB" // Generate a unique session token sessionToken := uuid.New().String() // Create the AutocompletePlacesRequest req := &placespb.AutocompletePlacesRequest{ Input: userInput, LocationBias: locationBias, LanguageCode: language, RegionCode: region, SessionToken: sessionToken, } // Call the AutocompletePlaces API resp, err := c.AutocompletePlaces(ctx, req) if err != nil { log.Fatalf("AutocompletePlaces failed: %v", err) } // Process the response fmt.Printf("Autocomplete suggestions for '%s':\n", userInput) if len(resp.Suggestions) == 0 { fmt.Println(" No suggestions found.") return } for i, suggestion := range resp.Suggestions { fmt.Printf("%d. ", i+1) switch kind := suggestion.Kind.(type) { // Retrieve Place Predictions and Query Predictions case *placespb.AutocompletePlacesResponse_SuggestionPlacePrediction: placePrediction := kind.PlacePrediction fmt.Printf("Place Prediction: '%s'\n", placePrediction.GetText().GetText()) fmt.Printf(" Place ID: %s\n", placePrediction.GetPlaceId()) case *placespb.AutocompletePlacesResponse_SuggestionQueryPrediction: queryPrediction := kind.QueryPrediction fmt.Printf("Query Prediction: '%s'\n", queryPrediction.GetText().GetText()) default: fmt.Println("Unknown suggestion type") } fmt.Println("---") } }
নোডজেএস
const { PlacesClient } = require('@googlemaps/places').v1; // Import the crypto module for UUID generation, used for session tokens const crypto = require('crypto'); // Coordinates and radius for the location bias const biasLat = 51.5119; const biasLng = -0.1248; const biasRadiusMeters = 5000.0; // Autocomplete input const userInput = 'restaurants near Covent Garden'; // Language and region codes const languageCode = 'en-GB'; const regionCode = 'GB'; async function autocomplete() { // Instantiates the Places client const placesClient = new PlacesClient(); const biasCenterPoint = { latitude: biasLat, longitude: biasLng }; const biasCircleArea = { center: biasCenterPoint, radius: biasRadiusMeters, }; // Create the location bias object using a circle const locationBias = { circle: biasCircleArea, }; // Generate a unique session token const sessionToken = crypto.randomUUID(); // Construct the request object const request = { input: userInput, locationBias: locationBias, languageCode: languageCode, regionCode: regionCode, sessionToken: sessionToken, }; // Call Autocomplete and output the response to the console const [response] = await placesClient.autocompletePlaces(request); console.log(JSON.stringify(response, null, 2)); // Pretty print the JSON } autocomplete();
পাইথন
import uuid # For generating session tokens from google.maps import places_v1 from google.type import latlng_pb2 async def autocomplete(): bias_lat = 51.516177 bias_lng = -0.127245 bias_radius_meters = 5000.0 # Create the LatLng object for the bias center bias_center_point = latlng_pb2.LatLng(latitude=bias_lat, longitude=bias_lng) # Create the Circle object using a dictionary bias_circle_dict = { "center": bias_center_point, "radius": bias_radius_meters } bias_circle_area = places_v1.types.Circle(bias_circle_dict) # Create the LocationBias object using a dictionary location_bias_dict = { "circle": bias_circle_area } location_bias = places_v1.types.AutocompletePlacesRequest.LocationBias(location_bias_dict) # The autocomplete text user_input = "Google Central St Giles" # Language and region language = "en-GB" region = "GB" # Generate a unique session token for this autocomplete session session_token = str(uuid.uuid4()) client = places_v1.PlacesAsyncClient() # Build the request request = places_v1.AutocompletePlacesRequest( input=user_input, language_code=language, region_code=region, location_bias=location_bias, session_token=session_token, ) response = await client.autocomplete_places(request=request) return response print(await autocomplete())
.নেট
using Google.Maps.Places.V1; using Google.Type; ... private static async Task Autocomplete() { PlacesClient client = await PlacesClient.CreateAsync(); // Set search variables string userInput = "Google Central St Giles"; double biasLatitude = 51.516177; double biasLongitude = -0.127245; double biasRadiusMeters = 5000.0; string language = "en-GB"; string region = "GB"; LatLng biasCenterPoint = new LatLng { Latitude = biasLatitude, Longitude = biasLongitude }; Circle biasCircleArea = new Circle { Center = biasCenterPoint, Radius = biasRadiusMeters }; // Create the location restriction using a circle AutocompletePlacesRequest.Types.LocationBias locationBias = new AutocompletePlacesRequest.Types.LocationBias { Circle = biasCircleArea }; // Generate a unique session token for this autocomplete session string sessionToken = Guid.NewGuid().ToString(); // Build the Autocomplete request AutocompletePlacesRequest request = new AutocompletePlacesRequest { Input = userInput, LocationBias = locationBias, LanguageCode = language, RegionCode = region, SessionToken = sessionToken, }; // Call Autocomplete and output the response to the console AutocompletePlacesResponse response = await client.AutocompletePlacesAsync(request); Console.WriteLine(response); }
একটি অভিধান ব্যবহার করে একটি বৃত্ত অবস্থান পক্ষপাত সংজ্ঞায়িত করুন। একটি সেশন টোকেন হিসাবে ব্যবহার করার জন্য একটি UUID তৈরি করা হয়৷ সেশন টোকেন সম্পর্কে আরও তথ্যের জন্য, সেশন টোকেন ব্যবহার করা দেখুন। এগুলি অন্যান্য API পরামিতিগুলির পাশাপাশি অনুরোধ অবজেক্টে প্রেরণ করা হয়:
FieldMask স্বয়ংসম্পূর্ণের জন্য প্রয়োজনীয় প্যারামিটার নয়, তাই এই অনুরোধ থেকে বাদ দেওয়া হয়েছে।
স্থানের ছবি (নতুন)
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কীভাবে প্লেস ফটো কল করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল।
জাভা
import com.google.api.gax.rpc.FixedHeaderProvider; import com.google.api.gax.rpc.HeaderProvider; import com.google.maps.places.v1.GetPhotoMediaRequest; import com.google.maps.places.v1.GetPlaceRequest; import com.google.maps.places.v1.Photo; import com.google.maps.places.v1.PhotoMedia; import com.google.maps.places.v1.Place; import com.google.maps.places.v1.PlacesClient; import com.google.maps.places.v1.PlacesSettings; ... private static void PlacePhoto() { String placeId = "ChIJaXQRs6lZwokRY6EFpJnhNNE"; String placeName = "places/" + placeId; int photoMaxWidth = 800; try { // Only request the photos field from Place Details Map<String, String> getPlaceHeaders = new HashMap<>(); String getPlaceFieldMaskString = "photos"; getPlaceHeaders.put("x-goog-fieldmask", getPlaceFieldMaskString); HeaderProvider getPlaceHeaderProvider = FixedHeaderProvider.create(getPlaceHeaders); PlacesSettings getPlaceSettings = PlacesSettings.newBuilder() .setHeaderProvider(getPlaceHeaderProvider) .build(); PlacesClient placeDetailsClient = PlacesClient.create(getPlaceSettings); // Build the Place Details request GetPlaceRequest getPlaceRequest = GetPlaceRequest.newBuilder() .setName(placeName) .build(); Place placeResponse = placeDetailsClient.getPlace(getPlaceRequest); // Check if photos were returned and get the first photo's media name Listphotos = placeResponse.getPhotosList(); if (photos != null && !photos.isEmpty()) { Photo firstPhoto = photos.get(0); String firstPhotoName = firstPhoto.getName(); if (firstPhotoName == null || firstPhotoName.isEmpty()) { return; } String photoMediaName = firstPhotoName + "/media"; // Build the Place Photos request GetPhotoMediaRequest photoRequest = GetPhotoMediaRequest.newBuilder() .setName(photoMediaName) .setMaxWidthPx(photoMaxWidth) .build(); PlacesClient photoMediaClient = PlacesClient.create(); // Call Place Photos and output the response to the console PhotoMedia photoMediaResponse = photoMediaClient.getPhotoMedia(photoRequest); System.out.println(photoMediaResponse); placeDetailsClient.close(); photoMediaClient.close(); } else { System.out.println("\nNo photos were found for this place in the Place Details response."); } } catch (Exception e) { System.err.println("An error occurred: " + e.getMessage()); } }
যাও
package main import ( "context" "fmt" "log" places "cloud.google.com/go/maps/places/apiv1" placespb "cloud.google.com/go/maps/places/apiv1/placespb" "google.golang.org/grpc/metadata" ) func main() { ctx := context.Background() // Initialize the Places Client c, err := places.NewClient(ctx) if err != nil { log.Fatalf("NewClient: %v", err) } defer c.Close() // Use Place Details to find a photo resource name // Define the Place ID and construct the resource name placeID := "ChIJaXQRs6lZwokRY6EFpJnhNNE" resourceName := "places/" + placeID // Define the FieldMask to request the photos field getPlaceFieldMask := "photos" // Create the GetPlaceRequest getPlaceReq := &placespb.GetPlaceRequest{ Name: resourceName, } // Add the FieldMask header to the Place Details request getPlaceCtx := metadata.AppendToOutgoingContext(ctx, "x-goog-fieldmask", getPlaceFieldMask) // Call Place Details placeResp, err := c.GetPlace(getPlaceCtx, getPlaceReq) if err != nil { log.Fatalf("GetPlace failed: %v", err) } // Check if photos were returned and get the first photo's name if len(placeResp.GetPhotos()) == 0 { log.Fatalf("No photos found for place: %s", resourceName) return } firstPhoto := placeResp.GetPhotos()[0] photoMediaResourceName := firstPhoto.GetName() + "/media" // Define photo dimensions maxWidth := int32(800) // Create the Place Photo request getPhotoMediaReq := &placespb.GetPhotoMediaRequest{ Name: photoMediaResourceName, MaxWidthPx: maxWidth, } // 10. Call Place Photo API photoMediaResp, err := c.GetPhotoMedia(ctx, getPhotoMediaReq) if err != nil { log.Fatalf("GetPhotoMedia failed for %s: %v", photoMediaResourceName, err) } fmt.Println("\nPhoto Media Details:") fmt.Printf(" Resource Name: %s\n", photoMediaResp.GetName()) fmt.Printf(" Photo URI: %s\n", photoMediaResp.GetPhotoUri()) }
নোডজেএস
const { PlacesClient } = require('@googlemaps/places').v1; // Place ID for the place whose photos you want const placeId = 'ChIJaXQRs6lZwokRY6EFpJnhNNE'; // Maximum width for the photo const maxWidthPx = 800; // Field mask to request the photos field in the GetPlace call const getPlaceFieldMask = 'photos'; async function getPlacePhoto() { // Instantiates the Places client const placesClient = new PlacesClient(); const placeName = `places/${placeId}`; // Get Place details to find photo references const getPlaceRequest = { name: placeName, }; const getPlaceCallOptions = { otherArgs: { headers: { 'X-Goog-FieldMask': getPlaceFieldMask, }, }, }; const [placeResponse] = await placesClient.getPlace(getPlaceRequest, getPlaceCallOptions); // Check if photos exist and get the first one if (!placeResponse.photos || placeResponse.photos.length === 0) { console.log(`\nNo photos found for Place ID: ${placeId}`); return; } // Get the resource name of the first photo const firstPhoto = placeResponse.photos[0]; const photoMediaName = `${firstPhoto.name}/media`; // Construct the Place Photos request const getPhotoMediaRequest = { name: photoMediaName, maxWidthPx: maxWidthPx, }; // Call Place Photos and output the response to the console const [photoMediaResponse] = await placesClient.getPhotoMedia(getPhotoMediaRequest); console.log(photoMediaResponse); } getPlacePhoto();
পাইথন
from google.maps import places_v1 async def place_photo(): client = places_v1.PlacesAsyncClient() # Build the request request = places_v1.GetPlaceRequest( name="places/ChIJaXQRs6lZwokRY6EFpJnhNNE", ) # Set the field mask fieldMask = "photos" # Make the request response = await client.get_place(request=request, metadata=[("x-goog-fieldmask",fieldMask)]) if response.photos: # Check if the photos list contains photos # Get the first photo name from the response first_photo_name = response.photos[0].name + "/media" # Build the request photo_request = places_v1.GetPhotoMediaRequest( name=first_photo_name, max_width_px=800, ) photo_response = await client.get_photo_media(request=photo_request) return photo_response else: return("No photos were returned in the response.") print(await place_photo())
.নেট
using Google.Api.Gax.Grpc; using Google.Maps.Places.V1; ... private static async Task PlacePhoto() { PlacesClient client = await PlacesClient.CreateAsync(); PlaceName placeName = PlaceName.FromPlace("ChIJaXQRs6lZwokRY6EFpJnhNNE"); int photoMaxWidth = 800; // Build the Place Details request GetPlaceRequest getPlaceRequest = new GetPlaceRequest { PlaceName = placeName }; // Only request the photos field from Place Details string getPlaceFields = "photos"; CallSettings getPlaceCallSettings = CallSettings.FromHeader("X-Goog-FieldMask", getPlaceFields); // Make the Place Details API call Place placeResponse = await client.GetPlaceAsync(getPlaceRequest, getPlaceCallSettings); // Check if photos were returned and get the first photo's media name if (placeResponse?.Photos != null && placeResponse.Photos.Any()) { // Get the resource name of the first photo & append "/media" string firstPhotoResourceName = placeResponse.Photos[0].Name; string photoMediaNameString = $"{firstPhotoResourceName}/media"; // Build the Place Photos request GetPhotoMediaRequest photoRequest = new GetPhotoMediaRequest { Name = photoMediaNameString, MaxWidthPx = photoMaxWidth }; // Call Place Photos and output the response to the console PhotoMedia photoMediaResponse = await client.GetPhotoMediaAsync(photoRequest); Console.WriteLine(photoMediaResponse); } else { Console.WriteLine("\nNo photos were found for this place in the Place Details response."); } }
একটি স্থানের জন্য ফটোর জন্য অনুরোধ করতে প্রথমে স্থানের বিবরণ (নতুন) কল করুন। স্থানের বিশদ বিবরণ (নতুন) ছবির নাম সহ উত্তর দেয়। স্থানের বিশদ বিবরণ (নতুন) থেকে প্রথম ফিরে আসা ছবির নামটি তারপর স্থানের ফটো (নতুন) কল করতে ব্যবহৃত হয়। আমরা ফেরত দেওয়া ছবির জন্য সর্বোচ্চ প্রস্থও সেট করেছি।