ডিফল্টরূপে, আগ্রহের স্থান (POI) গুলো তাদের সংশ্লিষ্ট আইকনসহ মূল মানচিত্রে প্রদর্শিত হয়। POI-গুলোর মধ্যে পার্ক, স্কুল, সরকারি ভবন এবং আরও অনেক কিছু অন্তর্ভুক্ত। এছাড়াও, যখন মানচিত্রের ধরন kGMSTypeNormal হয়, তখন ব্যবসায়িক POI-গুলো ডিফল্টরূপে মানচিত্রে প্রদর্শিত হয়। ব্যবসায়িক POI-গুলো দোকান, রেস্তোরাঁ, হোটেল এবং এই জাতীয় ব্যবসা প্রতিষ্ঠানকে বোঝায়।
iOS-এর জন্য Places SDK-তে সংজ্ঞায়িত Place ID- এর সাথে একটি POI সঙ্গতিপূর্ণ। উদাহরণস্বরূপ, বিনোদন পার্কগুলি POI, কিন্তু জলের ফোয়ারার মতো জিনিসগুলি সাধারণত POI নয় (যদি না সেগুলি জাতীয় বা ঐতিহাসিক তাৎপর্যপূর্ণ হয়)।
POI-গুলিতে ক্লিক ইভেন্ট শোনা হচ্ছে
যদি আপনি কোনো ব্যবহারকারীর POI-তে ট্যাপ করার প্রতিক্রিয়ায় সাড়া দিতে চান, তাহলে GMSMapViewDelegate ইমপ্লিমেন্ট করুন এবং mapView(_:didTapPOIWithPlaceID:name:location:) মেথডটি ইমপ্লিমেন্ট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
সুইফট
import GoogleMaps class POI: UIViewController, GMSMapViewDelegate { override func loadView() { let camera = GMSCameraPosition.camera( withLatitude: 47.603, longitude:-122.331, zoom:14 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.delegate = self self.view = mapView } func mapView( _ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String, name: String, location: CLLocationCoordinate2D ) { print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)") } }
উদ্দেশ্য-সি
#import "POI.h" @import GoogleMaps; @interface POI () <GMSMapViewDelegate> @end @implementation POI - (void)loadView { GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.603 longitude:-122.331 zoom:14]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.delegate = self; self.view = mapView; } #pragma mark - GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *)name location:(CLLocationCoordinate2D)location { NSLog(@"You tapped %@: %@, %f/%f", name, placeID, location.latitude, location.longitude); } @end
একটি তথ্য উইন্ডোতে বিস্তারিত বিবরণ দেখানো হচ্ছে
POI-গুলি ডিফল্টরূপে ম্যাপে দেখা যায়, কিন্তু এর কোনো ডিফল্ট অন-ক্লিক UI নেই (ব্যবহারকারী যখন কোনো POI-তে ট্যাপ করেন, তখন API স্বয়ংক্রিয়ভাবে কোনো তথ্য উইন্ডো বা অন্য কোনো ইউজার ইন্টারফেস প্রদর্শন করে না)। নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি মার্কার ব্যবহার করে একটি POI-এর জন্য তথ্য উইন্ডো প্রদর্শন করা যায়:
সুইফট
// Declare GMSMarker instance at the class level. let infoMarker = GMSMarker() // Attach an info window to the POI using the GMSMarker. func mapView( _ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String, name: String, location: CLLocationCoordinate2D ) { infoMarker.snippet = placeID infoMarker.position = location infoMarker.title = name infoMarker.opacity = 0; infoMarker.infoWindowAnchor.y = 1 infoMarker.map = mapView mapView.selectedMarker = infoMarker }
উদ্দেশ্য-সি
// Declare a GMSMarker instance at the class level. GMSMarker *infoMarker; // Attach an info window to the POI using the GMSMarker. - (void)mapView:(GMSMapView *)mapView didTapPOIWithPlaceID:(NSString *)placeID name:(NSString *)name location:(CLLocationCoordinate2D)location { infoMarker = [GMSMarker markerWithPosition:location]; infoMarker.snippet = placeID; infoMarker.title = name; infoMarker.opacity = 0; CGPoint pos = infoMarker.infoWindowAnchor; pos.y = 1; infoMarker.infoWindowAnchor = pos; infoMarker.map = mapView; mapView.selectedMarker = infoMarker; }
মানচিত্রে POI দেখানো বন্ধ করা
আপনি সমস্ত POI-তে অথবা POI-এর নির্দিষ্ট বিভাগগুলিতে কাস্টম স্টাইল প্রয়োগ করে POI-গুলি লুকাতে পারেন।
নিম্নলিখিত JSON স্টাইলের ঘোষণাটি মানচিত্রে থাকা সমস্ত ব্যবসায়িক POI লুকিয়ে রাখে:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
আরেকটি উদাহরণ হিসেবে, নিম্নলিখিত JSON-টি POI-এর সকল ক্যাটাগরির প্রদর্শনকে সহজ করে তোলে:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
আরও বিস্তারিত জানতে, স্টাইলিং ব্যবহার করে ম্যাপের বৈশিষ্ট্য লুকানোর নির্দেশিকাটি দেখুন।