চিহ্নিতকারী উপাদান স্থাপন করুন

প্লেস মার্কারস কম্পোনেন্টটি আপনাকে কাস্টমাইজযোগ্য ম্যাপ অ্যানোটেশন তৈরি করার সুযোগ দেয়, যা সরাসরি ম্যাপের উপর কোনো স্থানের গুরুত্বপূর্ণ তথ্য প্রদর্শন করে। আপনি কোনো স্থানের রেটিং, স্থানের ধরন, খোলা বা বন্ধ অবস্থা, মূল্যের পরিসীমা, অথবা নিজস্ব টেক্সট (যেমন, এআই-দ্বারা তৈরি কোনো লেবেল বা ভ্রমণপথ নম্বর)-এর মতো বিষয়বস্তু প্রদর্শন করতে পারেন। এর ফলে আপনার ব্যবহারকারীরা কোনো বিস্তারিত প্লেস কার্ডে ট্যাপ না করেই ম্যাপ অন্বেষণের আরও তথ্যপূর্ণ অভিজ্ঞতা লাভ করেন।

স্থান চিহ্নিতকারীগুলির জন্য উপলব্ধ আইকন এবং লেখা

প্রতিটি PlaceMarker জন্য আপনি একটি মার্কার আইকন এবং ঐচ্ছিক মার্কার টেক্সট প্রদর্শন করতে পারেন।

উপলব্ধ আইকনগুলো হলো:

  • type : স্থানের ধরণ।
  • none : কোনো আইকন নেই।
উপলব্ধ টেক্সট মার্কারগুলো হলো:
  • rating : প্রাপ্ত নম্বর।
  • priceRange : মূল্যের পরিসর (উদাহরণস্বরূপ, $১০-২০)।
  • openStatus : ব্যবসাটি খোলা না বন্ধ।
  • custom : নিজস্ব লেখা (উদাহরণস্বরূপ, "জনপ্রিয়")।

স্থান আইডি ( .placeID ), রিসোর্স নাম ( .resourceName ), বা ভৌগোলিক স্থানাঙ্ক ( .coordinate ) ব্যবহার করে স্থানটি উল্লেখ করুন।

প্রদর্শন এবং অ্যাট্রিবিউশন প্রয়োজনীয়তা

যখন Places UI Kit ম্যাপ মার্কারগুলো প্রদর্শিত হয়, তখন মার্কারগুলো বিচ্ছিন্নভাবে দেখানো যাবে না। প্রয়োজনীয় গুগল ব্র্যান্ডিং, অবদানকারীর স্বীকৃতি এবং ‘সমস্যা রিপোর্ট করুন’ ফ্লো প্রদানের জন্য সেগুলোকে অবশ্যই ইন্টারেক্টিভ হতে হবে এবং ক্লিক বা ট্যাপ করলে একটি সংশ্লিষ্ট Place Details Component বা Lightbox খুলতে হবে।

যেসব ক্ষেত্রে স্থান সীমিত, সেসব ক্ষেত্রে আমাদের ছবি ও পর্যালোচনার কৃতিত্ব প্রদানের শর্তাবলী দেখুন।

স্থান চিহ্নিতকারীর উদাহরণ

মৌলিক মার্কার কাস্টমাইজেশন

নিম্নলিখিত কোড উদাহরণটি প্লেস মার্কারের প্রাথমিক কাস্টমাইজেশন প্রদর্শন করে।

সুইফট

import GooglePlacesSwift
import SwiftUI

@MainActor
struct DefaultMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.placeID("PLACE_ID"),
      markerIcon: .none
    )
  }
}

@MainActor
struct RatingMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.placeID("PLACE_ID"),
      markerIcon: .none,
      markerText: .rating
    )
  }
}

@MainActor
struct TypeAndRatingMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.placeID("PLACE_ID"),
      markerIcon: .type,
      markerText: .rating
    )
  }
}


@MainActor
struct PriceRangeMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.resourceName("places/PLACE_RESOURCE_NAME"),
      markerIcon: .none,
      markerType: .priceRange
    )
  }
}


@MainActor
struct OpenStatusMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.coordinate(CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)),
      markerIcon: .icon,
      markerText: .openStatus
    )
  }
}
@MainActor
struct PhotoMarker: View {
    PlaceMarker(
        identifier: PlaceIdentifier.resourceName("places/PLACE_RESOURCE_NAME")
        markerIcon =.Photo
    )
}


@MainActor
struct CustomMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.placeID("PLACE_ID"),
      markerIcon: .none,
      markerType: .custom(label: "3")
    )
  }
}
  

মার্কারের চেহারা কাস্টমাইজ করুন

নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে ডিক্লারেটিভ SwiftUI ভিউ মডিফায়ার ব্যবহার করে মার্কারের চেহারা কাস্টমাইজ করা যায়, যেমন—ত্রিভুজাকার স্পিচ বাবলের ঠোঁটটি লুকানো এবং ব্যবহারকারী মার্কারটিতে ট্যাপ করলে কাস্টম অ্যাপ অ্যাকশন ট্রিগার করার জন্য একটি ট্যাপ কলব্যাক প্রদান করা।

সুইফট

@MainActor
struct ModifierStyleMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: .placeID("PLACE_ID"),
      markerIcon: .none,
      markerText: .openStatus,
      configuration: PlaceMarkerConfiguration(beakPresence: false)
    )
    .onTap { placeID in
      print("Marker tapped for place: \(placeID)")
    }
  }
}

কলব্যাকগুলি পরিচালনা করুন

নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে সফল রেন্ডারিং বা অনুপস্থিত ডেটার ত্রুটিগুলি পরিচালনা করতে কলব্যাক ব্যবহার করতে হয়।

সুইফট

import GooglePlacesSwift
import SwiftUI


@MainActor
struct StatusHandlingMarker: View {
  var body: some View {
    PlaceMarker(
      identifier: PlaceIdentifier.placeID("PLACE_ID"),
      markerIcon: .none
      markerText: .priceRange,
    )
    /// Triggered when place data is successfully fetched or when data fetching fails or 
    /// required data is missing for the place..
    .onLoad { result in
        if let place = result.place {
          print("Marker successfully loaded for place ID: \(place.placeID)")
        } else if let error = result.error {
          print("Failed to load marker: \(error)")
      }
    }
  }
}

Maps SDK-এর সাথে একীভূত করুন

নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে PlaceMarkerHostingView হেল্পার ক্লাস ব্যবহার করে PlaceMarker PlaceMarker Maps SDK for iOS GMSMarker মধ্যে এম্বেড করতে হয়।

সুইফট

import GoogleMaps
import GooglePlacesSwift
import SwiftUI
import UIKit


func addPlaceMarker(to mapView: GMSMapView, placeID: String) {
  let marker = GMSMarker()
  let markerView = PlaceMarker(
    identifier: .placeID(placeID),
    markerType: .rating(showIcon: true),
  ).onLoad { result in
    switch Result
    case .success(let place)
      marker.position = place.coordinate
    case .error(let error) {
      print("Failed to load marker: \(error)")
    }
  }

  marker.iconView = PlaceMakerHostingView(markerView)
  marker.map = mapView
}