আপনার iOS অ্যাপে একটি মানচিত্র যোগ করুন (উদ্দেশ্য-সি)

1. আপনি শুরু করার আগে

বিমূর্ত

এই কোডল্যাবে আপনি অবজেক্টিভ-সি-তে iOS অ্যাপ তৈরির জন্য Google মানচিত্র প্ল্যাটফর্ম ব্যবহার শুরু করার জন্য যা যা প্রয়োজন তা শিখবেন। আপনি iOS এর জন্য মানচিত্র SDK লোড করা, আপনার প্রথম মানচিত্র প্রদর্শন করা, মার্কার এবং মার্কার ক্লাস্টারিংয়ের সাথে কাজ করা, মানচিত্রে অঙ্কন করা এবং ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করা পর্যন্ত সমস্ত মৌলিক বিষয়গুলি শিখবেন৷

আপনি কি নির্মাণ করবেন

342520482a888519.png

এই কোডল্যাবে, আপনি একটি iOS অ্যাপ তৈরি করবেন যা নিম্নলিখিতগুলি করে:

  • iOS এর জন্য Maps SDK এবং iOS ইউটিলিটি লাইব্রেরির জন্য Maps SDK লোড করে
  • সিডনি, অস্ট্রেলিয়াকে কেন্দ্র করে একটি মানচিত্র প্রদর্শন করে
  • সিডনির আশেপাশে 100 পয়েন্টের জন্য কাস্টম মার্কার প্রদর্শন করে
  • মার্কার ক্লাস্টারিং প্রয়োগ করে
  • ব্যবহারকারীর মিথস্ক্রিয়া সক্ষম করে যা পুনরায় কেন্দ্রীভূত করে এবং যখন একটি মার্কার ক্লিক করা হয় তখন মানচিত্রে একটি বৃত্ত আঁকে

আপনি কি শিখবেন

  • Google মানচিত্র প্ল্যাটফর্মের সাথে শুরু করা
  • iOS এর জন্য Maps SDK এবং iOS ইউটিলিটি লাইব্রেরির জন্য Google মানচিত্র SDK লোড করা হচ্ছে
  • একটি মানচিত্র লোড হচ্ছে
  • মার্কার, কাস্টম মার্কার এবং মার্কার ক্লাস্টারিং ব্যবহার করা
  • ব্যবহারকারীর মিথস্ক্রিয়া প্রদান করতে iOS ইভেন্ট সিস্টেমের জন্য মানচিত্র SDK-এর সাথে কাজ করা
  • মানচিত্র প্রোগ্রামেটিক নিয়ন্ত্রণ
  • মানচিত্রে অঙ্কন

পূর্বশর্ত

এই কোডল্যাবটি সম্পূর্ণ করার জন্য আপনাকে নীচের আইটেমগুলির সাথে পরিচিত হতে হবে। আপনি যদি ইতিমধ্যেই Google মানচিত্র প্ল্যাটফর্মের সাথে কাজ করার সাথে পরিচিত হন, তাহলে কোডল্যাবে এগিয়ে যান!

প্রয়োজনীয় Google মানচিত্র প্ল্যাটফর্ম পণ্য

এই কোডল্যাবে, আপনি নিম্নলিখিত Google মানচিত্র প্ল্যাটফর্ম পণ্যগুলি ব্যবহার করবেন:

  • iOS এর জন্য মানচিত্র SDK
  • iOS ইউটিলিটি লাইব্রেরির জন্য Google মানচিত্র SDK

Google Maps প্ল্যাটফর্ম দিয়ে শুরু করুন

আপনি যদি আগে Google মানচিত্র প্ল্যাটফর্ম ব্যবহার না করে থাকেন তবে Google মানচিত্র প্ল্যাটফর্মের সাথে শুরু করুন নির্দেশিকা অনুসরণ করুন বা নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে Google মানচিত্র প্ল্যাটফর্ম প্লেলিস্টের সাথে শুরু করুন:

  1. একটি বিলিং অ্যাকাউন্ট তৈরি করুন।
  2. একটি প্রকল্প তৈরি করুন।
  3. Google মানচিত্র প্ল্যাটফর্ম API এবং SDK সক্ষম করুন (আগের বিভাগে তালিকাভুক্ত)৷
  4. একটি API কী তৈরি করুন।

এই কোডল্যাবের জন্য অন্যান্য প্রয়োজনীয়তা

এই কোডল্যাবটি সম্পূর্ণ করতে, আপনার নিম্নলিখিত অ্যাকাউন্ট, পরিষেবা এবং সরঞ্জামগুলির প্রয়োজন হবে:

  • বিলিং সক্ষম সহ একটি Google ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট৷
  • একটি Google মানচিত্র প্ল্যাটফর্ম API কী iOS এর জন্য মানচিত্র SDK সক্ষম
  • অবজেক্টিভ-সি এর প্রাথমিক জ্ঞান
  • Xcode 12.0 12.0 বা তার পরবর্তী টার্গেট SDK সহ

2. সেট আপ করুন

নীচের সক্রিয়করণ পদক্ষেপের জন্য, আপনাকে iOS এর জন্য মানচিত্র SDK সক্ষম করতে হবে।

Google Maps প্ল্যাটফর্ম সেট আপ করুন

আপনার যদি ইতিমধ্যেই একটি Google ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট না থাকে এবং বিলিং সক্ষম করা একটি প্রকল্প থাকে, তাহলে অনুগ্রহ করে একটি বিলিং অ্যাকাউন্ট এবং একটি প্রকল্প তৈরি করতে Google মানচিত্র প্ল্যাটফর্মের সাথে শুরু করা নির্দেশিকাটি দেখুন৷

  1. ক্লাউড কনসোলে , প্রকল্পের ড্রপ-ডাউন মেনুতে ক্লিক করুন এবং এই কোডল্যাবের জন্য আপনি যে প্রকল্পটি ব্যবহার করতে চান সেটি নির্বাচন করুন।

  1. Google ক্লাউড মার্কেটপ্লেসে এই কোডল্যাবের জন্য প্রয়োজনীয় Google মানচিত্র প্ল্যাটফর্ম API এবং SDK সক্ষম করুন৷ এটি করতে, এই ভিডিও বা এই ডকুমেন্টেশনের ধাপগুলি অনুসরণ করুন৷
  2. ক্লাউড কনসোলের শংসাপত্র পৃষ্ঠায় একটি API কী তৈরি করুন। আপনি এই ভিডিও বা এই ডকুমেন্টেশনের ধাপগুলি অনুসরণ করতে পারেন। Google মানচিত্র প্ল্যাটফর্মের সমস্ত অনুরোধের জন্য একটি API কী প্রয়োজন৷

প্রজেক্ট স্টার্টার টেমপ্লেট সেটআপ

আপনি এই কোডল্যাবটি শুরু করার আগে, স্টার্টার প্রজেক্ট টেমপ্লেটের পাশাপাশি সম্পূর্ণ সমাধান কোড ডাউনলোড করতে নিম্নলিখিতগুলি করুন:

  1. https://github.com/googlecodelabs/maps-platform-101-objc- এ এই কোডল্যাবের জন্য গিটহাব রেপো ডাউনলোড বা ফর্ক করুন।

StarterApp প্রকল্পটি /starter ডিরেক্টরিতে অবস্থিত এবং কোডল্যাবটি সম্পূর্ণ করার জন্য আপনার প্রয়োজনীয় মৌলিক ফাইল কাঠামো অন্তর্ভুক্ত করে। আপনার যা কিছুর সাথে কাজ করতে হবে তা /starter/StarterApp ডিরেক্টরিতে অবস্থিত।

আপনি যদি সম্পূর্ণ সমাধান কোড চলমান দেখতে চান, আপনি উপরের সেটআপ পদক্ষেপগুলি সম্পূর্ণ করতে পারেন এবং /solution/SolutionApp ডিরেক্টরিতে সমাধানটি দেখতে পারেন।

3. iOS এর জন্য Maps SDK ইনস্টল করুন৷

iOS এর জন্য Maps SDK ব্যবহার করার প্রথম ধাপ হল প্রয়োজনীয় নির্ভরতা ইনস্টল করা। এই প্রক্রিয়ার দুটি ধাপ রয়েছে: Cocoapods নির্ভরতা পরিচালক থেকে iOS এর জন্য Maps SDK এবং iOS ইউটিলিটি লাইব্রেরির জন্য Maps SDK ইনস্টল করা এবং SDK-কে আপনার API কী প্রদান করা।

  1. Podfile এ iOS এর জন্য Maps SDK এবং iOS ইউটিলিটি লাইব্রেরির জন্য Maps SDK যোগ করুন।

এই কোডল্যাবে, আপনি iOS এর জন্য Maps SDK উভয়ই ব্যবহার করবেন, যা Google Maps-এর সমস্ত মূল কার্যকারিতা প্রদান করে এবং Maps iOS ইউটিলিটি লাইব্রেরি, যা মার্কার ক্লাস্টারিং সহ আপনার মানচিত্রকে সমৃদ্ধ করতে বিভিন্ন ধরনের উপযোগিতা প্রদান করে।

শুরু করতে, Xcode-এ (বা আপনার পছন্দের টেক্সট এডিটর) Pods > Podfile খুলুন এবং use_frameworks! :

pod 'GoogleMaps'
pod 'Google-Maps-iOS-Utils'
  1. iOS এর জন্য Maps SDK এবং iOS ইউটিলিটি লাইব্রেরি পডের জন্য Maps SDK ইনস্টল করুন।

নির্ভরতা ইনস্টল করতে, কমান্ড লাইন থেকে /starter ডিরেক্টরিতে pod install চালান। Cocoapods স্বয়ংক্রিয়ভাবে নির্ভরতা ডাউনলোড করবে, সেইসাথে StarterApp.xcworkspace তৈরি করবে। 3. একবার আপনার নির্ভরতা ইনস্টল হয়ে গেলে, StarterApp.xcworkspace এ StarterApp.xcworkspace খুলুন, তারপর Command+R টিপে আইফোন সিমুলেটরে অ্যাপটি চালান। সবকিছু সঠিকভাবে সেট আপ করা হলে, সিমুলেটর চালু হবে এবং একটি কালো পর্দা দেখাবে। চিন্তা করবেন না, আপনি এখনও কিছু তৈরি করেননি, তাই এটি প্রত্যাশিত! 4. AppDelegate.h এ SDK আমদানি করুন।

এখন আপনার নির্ভরতা ইনস্টল করা হয়েছে, এটি আপনার API কী SDK-তে প্রদান করার সময়। প্রথম ধাপ হল #import "AppDelegate.h" ইম্পোর্ট স্টেটমেন্টের নীচে নিম্নলিখিতগুলি রেখে নির্ভরতা হিসাবে iOS-এর জন্য মানচিত্র SDK আমদানি করা:

@import GoogleMaps;
  1. iOS SDK আমদানি বিবৃতির নীচে, আপনার API কী-তে সেট করা মান সহ একটি NSString ধ্রুবক ঘোষণা করুন:
static NSString *const kMapsAPIKey = @"YOUR API KEY";
  1. অ্যাপ্লিকেশনে provideAPIKeyGMSServices কল করে iOS SDK-তে API কী পাস করুন application: didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GMSServices provideAPIKey:kMapsAPIKey];
  return YES;
}

আপনার আপডেট করা AppDelegate.m ফাইলটি এখন এইরকম হওয়া উচিত:

#import "AppDelegate.h"
@import GoogleMaps;

static NSString *const kMapsAPIKey = @"YOUR API KEY";

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GMSServices provideAPIKey:kMapsAPIKey];
  return YES;
}
@end

আপনার Podfile এই মত হওয়া উচিত:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'

target 'StarterApp' do
  use_frameworks!

pod 'GoogleMaps', '5.1.0.0'
pod 'Google-Maps-iOS-Utils', '3.4.0'

end

এখন আপনার নির্ভরতা ইনস্টল করা হয়েছে এবং আপনার API কী প্রদান করা হয়েছে, আপনি iOS এর জন্য মানচিত্র SDK-এ কল করা শুরু করতে প্রস্তুত৷

4. একটি মানচিত্র প্রদর্শন করুন

আপনার প্রথম মানচিত্র প্রদর্শন করার সময়!

iOS-এর জন্য Maps SDK-এর সবচেয়ে বেশি ব্যবহৃত অংশ হল GMSMapView ক্লাস, যা অনেকগুলি পদ্ধতি প্রদান করে যা আপনাকে মানচিত্রের দৃষ্টান্তগুলি তৈরি এবং ম্যানিপুলেট করার অনুমতি দেয়৷ এখানে যে কিভাবে করা হয়.

  1. ViewController.m খুলুন।

এই কোডল্যাবের জন্য আপনি বাকি সমস্ত কাজ এখানেই করবেন। আপনি দেখতে পাবেন যে ভিউ কন্ট্রোলারের জন্য loadView এবং viewDidLoad লাইফসাইকেল ইভেন্টগুলি ইতিমধ্যেই আপনার জন্য স্টাব আউট হয়ে গেছে। 2. ফাইলের শীর্ষে নিম্নলিখিত যোগ করে iOS-এর জন্য মানচিত্র SDK আমদানি করুন:

@import GoogleMaps;
  1. GMSMapView ViewController ভেরিয়েবল ঘোষণা করুন।

GMSMapView এর উদাহরণ হল মূল অবজেক্ট যার সাথে আপনি এই কোডল্যাব জুড়ে কাজ করবেন, এবং আপনি বিভিন্ন ভিউ কন্ট্রোলার লাইফসাইকেল পদ্ধতি থেকে এটির উল্লেখ এবং কাজ করবেন। এটি উপলব্ধ করতে, এটি সংরক্ষণ করার জন্য একটি উদাহরণ ভেরিয়েবল ঘোষণা করতে ViewController এর বাস্তবায়ন আপডেট করুন:

@implementation ViewController {
  GMSMapView *_mapView;
}
  1. loadView , GMSCameraPosition এর একটি উদাহরণ তৈরি করুন।

GMSCameraPosition সংজ্ঞায়িত করে যেখানে মানচিত্রটি কেন্দ্রীভূত হবে এবং জুম স্তরটি প্রদর্শিত হবে। এই কোডটি 12-এর জুম স্তর সহ, -33.86 অক্ষাংশ এবং 151.20 দ্রাঘিমাংশে অস্ট্রেলিয়ার সিডনিতে মানচিত্রটিকে কেন্দ্রীভূত করতে ক্যামেরার সাথে cameraWithLatitude:longitude:zoom: পদ্ধতিটিকে কল করে:

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:12];
  1. loadView -এ, মানচিত্রটি ইনস্ট্যান্টিয়েট করতে GMSMapView এর একটি উদাহরণ তৈরি করুন।

একটি নতুন মানচিত্রের উদাহরণ তৈরি করতে, কল করুন mapWithFrame:camera: লক্ষ্য করুন কিভাবে ফ্রেমটি CGRectZero এ সেট করা হয়েছে, যা iOS CGGeometry লাইব্রেরি থেকে একটি গ্লোবাল ভেরিয়েবল যা ভিউ কন্ট্রোলারের ভিতরে অবস্থান (0,0) এ অবস্থিত 0 প্রস্থ, 0 উচ্চতার একটি ফ্রেম নির্দিষ্ট করে। ক্যামেরা আপনার তৈরি করা ক্যামেরা অবস্থানে সেট করা আছে।

ম্যাপটি আসলে প্রদর্শন করতে, পরবর্তীতে আপনি ভিউ কন্ট্রোলারের রুট ভিউকে _mapview এ সেট করবেন, যা মানচিত্রটিকে পূর্ণস্ক্রীনে প্রদর্শন করবে।

_mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.view = _mapView;
  1. ভিউ কন্ট্রোলারে GMSMapViewDelegate সেট করুন।

বাস্তবায়িত হলে, ম্যাপ ভিউ প্রতিনিধি আপনাকে GMSMapView উদাহরণে ব্যবহারকারীর মিথস্ক্রিয়া থেকে ইভেন্টগুলি পরিচালনা করার অনুমতি দেয়, যা আপনাকে পরবর্তী ধাপে প্রয়োজন হবে।

প্রথমে, GMSMapViewDelegate এর প্রোটোকলের সাথে সামঞ্জস্য করতে ViewController ইন্টারফেস আপডেট করুন GMSMapViewDelegate:

@interface ViewController ()<GMSMapViewDelegate>

এরপরে, GMSMapViewDelegate ViewController করতে নিম্নলিখিত যোগ করুন।

_mapView.delegate = self;

এখন iOS সিমুলেটরে অ্যাপটি পুনরায় লোড করুন ( Command+R ), এবং মানচিত্রটি উপস্থিত হওয়া উচিত!

2e6ebac422323aa6.png

রিক্যাপ করার জন্য, এই ধাপে আপনি অস্ট্রেলিয়ার সিডনি শহরকে কেন্দ্র করে একটি মানচিত্র প্রদর্শন করতে GMSMapView এর একটি উদাহরণ তৈরি করেছেন।

আপনার ViewController.m ফাইলটি এখন এইরকম হওয়া উচিত:

#import "ViewController.h"
#import "LocationGenerator.h"
@import GoogleMaps;

@interface ViewController ()<GMSMapViewDelegate>
@end

@implementation ViewController {
  GMSMapView *_mapView;
}

- (void)loadView {
  [super loadView];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:12];
  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  self.view = _mapView;
  _mapView.delegate = self;
}

5. ক্লাউড-ভিত্তিক মানচিত্র স্টাইলিং (ঐচ্ছিক)

আপনি ক্লাউড-ভিত্তিক মানচিত্র স্টাইলিং ব্যবহার করে আপনার মানচিত্রের শৈলী কাস্টমাইজ করতে পারেন।

একটি মানচিত্র আইডি তৈরি করুন

আপনি যদি এটির সাথে সম্পর্কিত একটি মানচিত্র শৈলী সহ একটি মানচিত্র আইডি তৈরি না করে থাকেন তবে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে মানচিত্র আইডি নির্দেশিকা দেখুন:

  1. একটি মানচিত্র আইডি তৈরি করুন।
  2. একটি মানচিত্র শৈলীতে একটি মানচিত্র ID সংযুক্ত করুন৷

আপনার অ্যাপে ম্যাপ আইডি যোগ করা হচ্ছে

আগের ধাপে আপনার তৈরি করা মানচিত্র আইডি ব্যবহার করতে, ViewController.m ফাইলটি খুলুন এবং loadView পদ্ধতির মধ্যে একটি GMSMapID অবজেক্ট তৈরি করুন এবং এটিকে মানচিত্র ID প্রদান করুন। এরপরে, একটি প্যারামিটার হিসাবে GMSMapID অবজেক্ট প্রদান করে GMSMapView ইনস্ট্যান্টিয়েশনটি পরিবর্তন করুন।

ViewController.m

- (void)loadView {
    GMSMapID *mapID = [[GMSMapID alloc] initWithIdentifier:@"YOUR_MAP_ID"];
    _mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:camera];
    // ...
}

একবার আপনি এটি সম্পূর্ণ করলে, এগিয়ে যান এবং আপনার নির্বাচিত স্টাইলে আপনার মানচিত্র দেখতে অ্যাপটি চালান!

6. মানচিত্রে চিহ্নিতকারী যোগ করুন

iOS এর জন্য Maps SDK এর সাথে ডেভেলপাররা অনেক কিছু করে থাকে, কিন্তু ম্যাপে মার্কার লাগানো অবশ্যই সবচেয়ে জনপ্রিয়। মার্কারগুলি আপনাকে মানচিত্রে নির্দিষ্ট পয়েন্টগুলি দেখানোর অনুমতি দেয় এবং এটি ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করার জন্য একটি সাধারণ UI উপাদান। আপনি যদি আগে Google Maps ব্যবহার করে থাকেন, তাহলে আপনি সম্ভবত ডিফল্ট মার্কারটির সাথে পরিচিত, যা দেখতে এইরকম:

590815267846f166.png

এই ধাপে, আপনি শিখবেন কিভাবে GMSMarker ক্লাস ব্যবহার করে মানচিত্রে মার্কার বসাতে হয়।

মনে রাখবেন যে ভিউ কন্ট্রোলারের loadView লাইফসাইকেল ইভেন্টে আগের ধাপ থেকে মানচিত্রটি লোড না হওয়া পর্যন্ত মার্কারগুলিকে মানচিত্রে স্থাপন করা যাবে না, তাই আপনি viewDidLoad লাইফসাইকেল ইভেন্টে এই পদক্ষেপগুলি সম্পূর্ণ করবেন, যা ভিউ (এবং মানচিত্র) হওয়ার পরে বলা হয় লোড করা হয়েছে।

  1. একটি CLLocationCoordinate2D অবজেক্ট সংজ্ঞায়িত করুন।

CLLocationCoordinate2D হল iOS CoreLocation লাইব্রেরি দ্বারা উপলব্ধ একটি কাঠামো, যা একটি সেট অক্ষাংশ এবং দ্রাঘিমাংশে একটি ভৌগলিক অবস্থান সংজ্ঞায়িত করে৷ আপনার প্রথম মার্কার তৈরি করা শুরু করতে, একটি CLLocationCoordinate2D অবজেক্ট সংজ্ঞায়িত করুন এবং মানচিত্রের কেন্দ্রে অক্ষাংশ এবং দ্রাঘিমাংশ সেট করুন। মানচিত্রের কেন্দ্রের স্থানাঙ্কগুলি ম্যাপ ভিউ থেকে, camera.target.latitude এবং camera.target.longitude বৈশিষ্ট্যগুলি ব্যবহার করে অ্যাক্সেস করা যেতে পারে।

CLLocationCoordinate2D mapCenter = CLLocationCoordinate2DMake(_mapView.camera.target.latitude, _mapView.camera.target.longitude);
  1. GMSMarker এর একটি উদাহরণ তৈরি করুন।

iOS এর জন্য Maps SDK GMSMarker ক্লাস প্রদান করে। GMSMarker এর প্রতিটি উদাহরণ মানচিত্রে একটি পৃথক মার্কারকে প্রতিনিধিত্ব করে এবং মার্কার markerWithPosition: এবং এটিকে একটি CLLocationCoordinate2D অবজেক্ট পাস করে SDK কে ম্যাপে মার্কারটি কোথায় রাখতে হবে তা জানাতে .

GMSMarker *marker = [GMSMarker markerWithPosition:mapCenter];
  1. একটি কাস্টম মার্কার আইকন সেট করুন।

Google মানচিত্রের জন্য ডিফল্ট লাল পিন মার্কারটি দুর্দান্ত, কিন্তু তাই আপনার মানচিত্রটি কাস্টমাইজ করছে! ভাগ্যক্রমে, একটি কাস্টম মার্কার ব্যবহার করা iOS এর জন্য মানচিত্র SDK-এর সাথে খুব সহজ৷ আপনি লক্ষ্য করবেন যে StarterApp প্রকল্পে আপনার ব্যবহারের জন্য 'custom_pin.png' নামক একটি চিত্র রয়েছে, তবে আপনি যে কোনো ছবি ব্যবহার করতে পারেন।

কাস্টম মার্কার সেট করতে, মার্কারটির icon বৈশিষ্ট্যটি UIImage এর একটি উদাহরণে সেট করুন।

marker.icon = [UIImage imageNamed:@"custom_pin.png"];
  1. ম্যাপে মার্কার রেন্ডার করুন।

আপনার মার্কার তৈরি করা হয়েছে, কিন্তু আপনি লক্ষ্য করবেন এটি মানচিত্রে নেই। এটি করার জন্য, GMSMarker দৃষ্টান্তের map বৈশিষ্ট্য GMSMapView এর একটি উদাহরণে সেট করুন।

marker.map = _mapView;

এখন অ্যাপটি পুনরায় লোড করুন এবং একটি মার্কার সহ আপনার প্রথম মানচিত্রটি দেখুন!

a4ea8724f8c5ba20.png

রিক্যাপ করার জন্য, এই বিভাগে আপনি GMSMarker ক্লাসের একটি উদাহরণ তৈরি করেছেন এবং মানচিত্রে একটি মার্কার প্রদর্শন করতে মানচিত্র দৃশ্যে এটি প্রয়োগ করেছেন। ViewController.m এ আপনার আপডেট করা viewDidLoad লাইফসাইকেল ইভেন্টটি এখন এইরকম হওয়া উচিত:

- (void)viewDidLoad {
  [super viewDidLoad];

  CLLocationCoordinate2D mapCenter = CLLocationCoordinate2DMake(_mapView.camera.target.latitude, _mapView.camera.target.longitude);
  GMSMarker *marker = [GMSMarker markerWithPosition:mapCenter];
  marker.icon = [UIImage imageNamed:@"custom_pin.png"];
  marker.map = _mapView;
}

7. মার্কার ক্লাস্টারিং সক্ষম করুন

অনেকগুলি মার্কার বা মার্কার ব্যবহার করার সময় যেগুলি একে অপরের কাছাকাছি থাকে, আপনি এমন একটি সমস্যার সম্মুখীন হতে পারেন যেখানে মার্কারগুলি ওভারল্যাপ হয় বা একসাথে খুব বেশি ভিড় দেখা যায়, যা ব্যবহারকারীর খারাপ অভিজ্ঞতার কারণ হয়৷ উদাহরণস্বরূপ, যদি দুটি মার্কার একসাথে খুব কাছাকাছি থাকে, তাহলে আপনি এইরকম পরিস্থিতির সাথে শেষ করতে পারেন:

6e39736160c6bce4.png

এখানেই মার্কার ক্লাস্টারিং আসে৷ মার্কার ক্লাস্টারিং হল আরেকটি সাধারণভাবে প্রয়োগ করা বৈশিষ্ট্য, যা কাছাকাছি চিহ্নিতকারীকে একটি একক আইকনে গোষ্ঠীবদ্ধ করে যা জুম স্তরের উপর নির্ভর করে পরিবর্তিত হয়, যেমন:

4abb38cd97cab3f1.png

মার্কার ক্লাস্টারিংয়ের জন্য অ্যালগরিদম মানচিত্রের দৃশ্যমান এলাকাটিকে একটি গ্রিডে বিভক্ত করে, তারপর একই কক্ষে থাকা আইকনগুলিকে ক্লাস্টার করে। সৌভাগ্যবশত আপনাকে এর কোনোটি নিয়ে চিন্তা করতে হবে না, যেহেতু Google Maps প্ল্যাটফর্ম টিম iOS ইউটিলিটি লাইব্রেরির জন্য Google Maps SDK নামে একটি সহায়ক, ওপেন-সোর্স ইউটিলিটি লাইব্রেরি তৈরি করেছে৷ এই লাইব্রেরি, অন্যান্য অনেক কিছুর মধ্যে, আপনার জন্য মার্কার ক্লাস্টারিং স্বয়ংক্রিয়ভাবে পরিচালনা করে। আপনি Google মানচিত্র প্ল্যাটফর্ম ডকুমেন্টেশনে মার্কার ক্লাস্টারিং সম্পর্কে আরও পড়তে পারেন, বা GitHub- এ iOS ইউটিলিটি লাইব্রেরির উত্সটি পরীক্ষা করে দেখতে পারেন।

  1. মানচিত্রে আরো অনেক মার্কার যোগ করুন।

মার্কার ক্লাস্টারিং কার্যে দেখতে, আপনার মানচিত্রে প্রচুর মার্কার থাকতে হবে। এটি সহজ করার জন্য, LocationGenerator.m এর স্টার্টার প্রকল্পে আপনার জন্য একটি সুবিধাজনক মার্কার জেনারেটর সরবরাহ করা হয়েছে।

আপনার মানচিত্রে যতগুলি মার্কার যুক্ত করতে চান, কেবলমাত্র generateMarkersNear:count: এ কল করুন পূর্ববর্তী ধাপের কোডের নিচের ভিউ কন্ট্রোলারের viewDidLoad লাইফসাইকেলে। পদ্ধতিটি একটি CLLocationCoordinate2D অবজেক্টে নির্দিষ্ট স্থানাঙ্কগুলির চারপাশে এলোমেলো অবস্থানে count নির্দিষ্ট করা মার্কারগুলির সংখ্যা তৈরি করে। এই ক্ষেত্রে, আপনি এটিকে শুধুমাত্র mapCenter ভেরিয়েবলটি পাস করতে পারেন যা আপনি আগে তৈরি করেছিলেন। চিহ্নিতকারী একটি NSArray এ ফেরত দেওয়া হয়।

NSArray<GMSMarker *> *markerArray = [LocationGenerator generateMarkersNear:mapCenter count:100];
  1. iOS ইউটিলিটি লাইব্রেরির জন্য Google মানচিত্র SDK আমদানি করুন।

আপনার প্রকল্পে নির্ভরতা হিসাবে মানচিত্র iOS ইউটিলিটি লাইব্রেরি যোগ করতে, ViewController.m এর শীর্ষে থাকা নির্ভরতার তালিকায় নিম্নলিখিতগুলি যুক্ত করুন:

@import GoogleMapsUtils;
  1. মার্কার ক্লাস্টার কনফিগার করুন।

মার্কার ক্লাস্টার ব্যবহার করার জন্য, এটি কীভাবে কাজ করে তা কনফিগার করার জন্য আপনাকে তিনটি জিনিস প্রদান করতে হবে: একটি ক্লাস্টারিং অ্যালগরিদম, একটি আইকন জেনারেটর এবং একটি রেন্ডারার৷ অ্যালগরিদম কীভাবে মার্কারগুলিকে ক্লাস্টার করা হয় তার আচরণ নির্ধারণ করে, যেমন একই ক্লাস্টারে অন্তর্ভুক্ত করার জন্য মার্কারগুলির মধ্যে দূরত্ব। আইকন জেনারেটর বিভিন্ন জুম স্তরে ব্যবহার করার জন্য ক্লাস্টার আইকন সরবরাহ করে। রেন্ডারার মানচিত্রে ক্লাস্টার আইকনগুলির প্রকৃত রেন্ডারিং পরিচালনা করে৷

আপনি যদি পছন্দ করেন তবে আপনি স্ক্র্যাচ থেকে এই সবগুলি লিখতে পারেন, তবে ম্যাপ iOS ইউটিলিটি লাইব্রেরি প্রক্রিয়াটিকে সহজ করার জন্য ডিফল্ট বাস্তবায়ন প্রদান করে৷ শুধু নিম্নলিখিত যোগ করুন:

id<GMUClusterAlgorithm> algorithm = [[GMUNonHierarchicalDistanceBasedAlgorithm alloc] init];

id<GMUClusterIconGenerator> clusterIconGenerator = [[GMUDefaultClusterIconGenerator alloc] init];

id<GMUClusterRenderer> renderer = [[GMUDefaultClusterRenderer alloc] initWithMapView:_mapView clusterIconGenerator:clusterIconGenerator];
  1. GMUClusterManager এর একটি উদাহরণ তৈরি করুন।

GMUClusterManager হল সেই ক্লাস যা আপনার দ্বারা নির্দিষ্ট করা অ্যালগরিদম, আইকন জেনারেটর এবং রেন্ডারার ব্যবহার করে মার্কার ক্লাস্টারিং প্রয়োগ করে। রেন্ডারার তৈরি করতে এবং ম্যাপ ভিউতে এটি উপলব্ধ করতে, প্রথমে ক্লাস্টার ম্যানেজার ইনস্ট্যান্স সংরক্ষণ করতে ViewController বাস্তবায়নে একটি ইনস্ট্যান্স ভেরিয়েবল যোগ করুন:

@implementation ViewController {
  GMSMapView *_mapView;
  GMUClusterManager *_clusterManager;
}

এরপরে, viewDidLoad লাইফসাইকেল ইভেন্টে GMUClusterManager এর উদাহরণ তৈরি করুন:

_clusterManager = [[GMUClusterManager alloc] initWithMap:_mapView algorithm:algorithm renderer:renderer];
  1. মার্কার যোগ করুন এবং মার্কার ক্লাস্টার চালান।

এখন যেহেতু আপনার মার্কার ক্লাস্টারের উদাহরণ কনফিগার করা হয়েছে, আপনাকে যা করতে হবে তা হল ক্লাস্টার ম্যানেজারকে addItems: তারপর ক্লাস্টার কল করে cluster চালান।

[_clusterManager addItems:markerArray];
[_clusterManager cluster];

আপনার অ্যাপটি পুনরায় লোড করুন এবং আপনার এখন এক টন মার্কার দেখতে হবে যা সুন্দরভাবে ক্লাস্টার করা হয়েছে৷ আপনি জুম ইন/আউট করার সাথে সাথে মার্কার ক্লাস্টারগুলিকে মানিয়ে নিতে ম্যাপে চিমটি করে এবং জুম করার মাধ্যমে এগিয়ে যান এবং বিভিন্ন জুম স্তরের সাথে খেলুন৷

c49383b07752bfc4.png

রিক্যাপ করতে, এই ধাপে আপনি iOS ইউটিলিটি লাইব্রেরির জন্য Google Maps SDK থেকে মার্কার ক্লাস্টারের একটি উদাহরণ কনফিগার করেছেন, তারপর মানচিত্রে 100টি মার্কার ক্লাস্টার করতে এটি ব্যবহার করেছেন। ViewController.m এ আপনার viewDidLoad জীবনচক্র ইভেন্টটি এখন এইরকম হওয়া উচিত:

- (void)viewDidLoad {
  [super viewDidLoad];

  CLLocationCoordinate2D mapCenter = CLLocationCoordinate2DMake(_mapView.camera.target.latitude,
                                                                _mapView.camera.target.longitude);
  GMSMarker *marker = [GMSMarker markerWithPosition:mapCenter];
  marker.icon = [UIImage imageNamed:@"custom_pin.png"];
  marker.map = _mapView;
  NSArray<GMSMarker *> *markerArray = [LocationGenerator generateMarkersNear:mapCenter count:100];

  id<GMUClusterAlgorithm> algorithm = [[GMUNonHierarchicalDistanceBasedAlgorithm alloc] init];
  id<GMUClusterIconGenerator> clusterIconGenerator = [[GMUDefaultClusterIconGenerator alloc] init];
  id<GMUClusterRenderer> renderer = [[GMUDefaultClusterRenderer alloc] initWithMapView:_mapView clusterIconGenerator:clusterIconGenerator];
  _clusterManager = [[GMUClusterManager alloc] initWithMap:_mapView algorithm:algorithm renderer:renderer];

  [_clusterManager addItems:markerArray];
  [_clusterManager cluster];
}

8. ব্যবহারকারীর মিথস্ক্রিয়া যোগ করুন

এখন আপনার কাছে একটি দুর্দান্ত চেহারার মানচিত্র রয়েছে যা মার্কারগুলি প্রদর্শন করে এবং মার্কার ক্লাস্টারিং ব্যবহার করে৷ এই ধাপে, আপনি আপনার মানচিত্রের ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে GMSMapViewDelegate ব্যবহার করে ব্যবহারকারীর ইন্টারঅ্যাকশনের কিছু অতিরিক্ত হ্যান্ডলিং যোগ করবেন, যা আপনি আগে ভিউ কন্ট্রোলারে সেট করেছিলেন।

iOS-এর জন্য Maps SDK একটি ব্যাপক ইভেন্ট সিস্টেম প্রদান করে যা ম্যাপ ভিউ প্রতিনিধির মাধ্যমে বাস্তবায়িত হয়, যার মধ্যে ইভেন্ট হ্যান্ডলার রয়েছে যা ব্যবহারকারীর বিভিন্ন ইন্টারঅ্যাকশন ঘটলে আপনাকে কোড চালানোর অনুমতি দেয়। উদাহরণস্বরূপ, ম্যাপভিউ প্রতিনিধির মধ্যে এমন পদ্ধতি রয়েছে যা আপনাকে ব্যবহারকারীর ম্যাপ এবং মার্কারগুলিতে ক্লিক করা, ম্যাপের ভিউ প্যান করা, জুম ইন এবং আউট করা এবং আরও অনেক কিছুর মত ইন্টারঅ্যাকশনের জন্য কোড এক্সিকিউশন ট্রিগার করতে দেয়।

এই ধাপে, আপনি প্রোগ্রাম্যাটিকভাবে ম্যাপ প্যানটিকে ব্যবহারকারীর দ্বারা ট্যাপ করা যেকোনো মার্কারকে কেন্দ্রে আনবেন।

  1. মার্কার ট্যাপ লিসেনার প্রয়োগ করুন।

mapView:didTapMarker বলা হয় যখন ব্যবহারকারী আপনার তৈরি করা মার্কারগুলির একটিতে ট্যাপ করে, সেইসাথে যেকোনও সময় একজন ব্যবহারকারী একটি মার্কার ক্লাস্টারে ট্যাপ করে (অভ্যন্তরীণভাবে মার্কার ক্লাস্টারগুলি GMSMarker এর উদাহরণ হিসাবে প্রয়োগ করা হয়)।

ইভেন্ট শ্রোতা বাস্তবায়ন করতে, end বিবৃতির আগে ViewController.m এর নীচে এটিকে স্টাব করে শুরু করুন।

আপনি লক্ষ্য করবেন যে পদ্ধতিটি NO করছে। এটি করা iOS SDK কে ডিফল্ট GMSMarker কার্যকারিতা চালানো চালিয়ে যেতে বলে, যেমন আপনার ইভেন্ট হ্যান্ডলার কোড চালানোর পরে একটি কনফিগার করা থাকলে একটি তথ্য উইন্ডো দেখানো।

- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {

  return NO;
}
  1. ট্যাপ ইভেন্টটি পরিচালনা করুন এবং যখন একটি মার্কার বা মার্কার ক্লাস্টারে ট্যাপ করা হয় তখন মানচিত্রটিকে রিসেন্টার করতে ক্যামেরাটিকে অ্যানিমেট করুন৷

কল করা হলে, mapView:didTapMarker ট্যাপ করা GMSMarker এর উদাহরণটি পাস করে, যা আপনাকে আপনার কোডে এটি পরিচালনা করার অনুমতি দেয়। আপনি animateToLocation: ইভেন্ট হ্যান্ডলারের ভিতর থেকে মানচিত্রের ভিউতে কল করে ম্যাপটিকে রিস্টার করার জন্য এই ইন্সট্যান্সটি ব্যবহার করতে পারেন এবং এটিকে মার্কার ইনস্ট্যান্সের অবস্থান পাস করতে পারেন, যা position বৈশিষ্ট্যে উপলব্ধ।

[_mapView animateToLocation:marker.position];
  1. একটি মার্কার ক্লাস্টারে ট্যাপ করা হলে জুম ইন করুন৷

একটি সাধারণ UX প্যাটার্ন হল মার্কার ক্লাস্টারগুলিতে ট্যাপ করার সময় জুম করা। এটি ব্যবহারকারীদের ক্লাস্টারযুক্ত মার্কারগুলি দেখতে দেয়, যেহেতু ক্লাস্টারটি নিম্ন জুম স্তরে প্রসারিত হবে।

যেমন আগে উল্লেখ করা হয়েছে, মার্কার ক্লাস্টার আইকন আসলে একটি কাস্টম আইকন সহ GMSMarker এর একটি বাস্তবায়ন। তাহলে আপনি কিভাবে বলতে পারেন যে একটি মার্কার বা একটি মার্কার ক্লাস্টার ট্যাপ করা হয়েছিল? যখন মার্কার ক্লাস্টার ম্যানেজার একটি নতুন ক্লাস্টার আইকন তৈরি করে, তখন এটি GMUCluster নামক একটি প্রোটোকলের সাথে সামঞ্জস্য করার জন্য GMSMarker এর উদাহরণ প্রয়োগ করে GMUCluster. ইভেন্ট হ্যান্ডলারে পাস করা মার্কার এই প্রোটোকলের সাথে সামঞ্জস্যপূর্ণ কিনা তা পরীক্ষা করতে আপনি একটি শর্তসাপেক্ষ ব্যবহার করতে পারেন।

একবার আপনি প্রোগ্রাম্যাটিকভাবে জানতে পারেন যে একটি ক্লাস্টার ট্যাপ করা হয়েছে, তারপর আপনি animateToZoom: ম্যাপ ভিউ ইনস্ট্যান্সে কল করতে পারেন এবং জুমটিকে বর্তমান জুম লেভেল প্লাস ওয়ানে সেট করতে পারেন। বর্তমান জুম স্তরটি camera.zoom প্রপার্টিতে ম্যাপ ভিউ ইনস্ট্যান্সে উপলব্ধ।

এছাড়াও, লক্ষ্য করুন কিভাবে নিচের কোডটি YES রিটার্ন করে। এটি ইভেন্ট হ্যান্ডলারকে বলে যে আপনি ইভেন্টটি পরিচালনা সম্পূর্ণ করেছেন এবং হ্যান্ডলারে আর কোনো কোড কার্যকর করবেন না। এটি করার একটি কারণ হল অন্তর্নিহিত GMSMarker অবজেক্টটিকে তার বাকি ডিফল্ট আচরণ চালানো থেকে আটকানো, যেমন একটি তথ্য উইন্ডো দেখানো, যা একটি ক্লাস্টার আইকন ট্যাপ করার ক্ষেত্রে খুব বেশি অর্থবোধ করে না।

if ([marker.userData conformsToProtocol:@protocol(GMUCluster)]) {
    [_mapView animateToZoom:_mapView.camera.zoom +1];
    return YES;
}

এখন অ্যাপটি পুনরায় লোড করুন এবং কিছু মার্কার এবং মার্কার ক্লাস্টারগুলিতে আলতো চাপুন৷ যখন উভয়টি ট্যাপ করা হয়, তখন মানচিত্রটি ট্যাপ করা উপাদানের উপর রিসেন্টার হবে। যখন একটি মার্কার ক্লাস্টার ট্যাপ করা হয়, তখন মানচিত্রটি একটি স্তর দ্বারা জুম করা হবে, এবং মার্কার ক্লাস্টারটি নীচে ক্লাস্টার করা মার্কারগুলিকে দেখানোর জন্য প্রসারিত হবে৷

রিক্যাপ করার জন্য, এই ধাপে আপনি মার্কার ট্যাপ লিসেনার প্রয়োগ করেছেন, এবং ট্যাপ করা এলিমেন্টে রিসেন্টার করার জন্য ইভেন্টটি পরিচালনা করেছেন এবং যদি সেই উপাদানটি একটি মার্কার ক্লাস্টার আইকন হয় তাহলে জুম ইন করুন।

আপনার mapView:didTapMarker পদ্ধতিটি এইরকম হওয়া উচিত:

- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
  [_mapView animateToLocation:marker.position];

  if ([marker.userData conformsToProtocol:@protocol(GMUCluster)]) {
    [_mapView animateToZoom:_mapView.camera.zoom +1];
    return YES;
  }

  return NO;
}

9. মানচিত্রে আঁকুন

এখন পর্যন্ত, আপনি সিডনির একটি মানচিত্র তৈরি করেছেন যা 100 র্যান্ডম পয়েন্টে মার্কার দেখায় এবং ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করে। এই কোডল্যাবের শেষ ধাপের জন্য, আপনি আপনার মানচিত্রের অভিজ্ঞতায় একটি অতিরিক্ত দরকারী বৈশিষ্ট্য যোগ করতে iOS-এর জন্য Maps SDK-এর অঙ্কন বৈশিষ্ট্যগুলি ব্যবহার করবেন৷

কল্পনা করুন যে এই মানচিত্রটি সেই ব্যবহারকারীরা ব্যবহার করতে চলেছে যারা সিডনি শহরটি অন্বেষণ করতে চায়৷ একটি দরকারী বৈশিষ্ট্য একটি মার্কার চারপাশে একটি ব্যাসার্ধ কল্পনা করা হবে যখন এটি ক্লিক করা হয়. এটি ব্যবহারকারীকে সহজেই বুঝতে সাহায্য করবে যে ক্লিক করা মার্কার থেকে সহজে হাঁটার দূরত্বের মধ্যে অন্য গন্তব্যগুলি কী।

iOS SDK-তে মানচিত্রের আকার আঁকার জন্য ফাংশনের একটি সেট অন্তর্ভুক্ত রয়েছে, যেমন বর্গক্ষেত্র, বহুভুজ, লাইন এবং বৃত্ত। এরপরে, আপনি একটি বৃত্ত রেন্ডার করবেন যাতে একটি মার্কারের চারপাশে 800 মিটার (প্রায় অর্ধ মাইল) ব্যাসার্ধ দেখানো হয় যখন এটি ক্লিক করা হয়।

  1. ভিউ কন্ট্রোলার বাস্তবায়নে একটি _circ ইনস্ট্যান্স ভেরিয়েবল যোগ করুন।

এই ইন্সট্যান্স ভেরিয়েবলটি অতি সম্প্রতি আঁকা বৃত্তটি সংরক্ষণ করতে ব্যবহার করা হবে, যাতে অন্যটি আঁকার আগে এটি ধ্বংস করা যায়। সর্বোপরি, এটি ব্যবহারকারীর পক্ষে খুব সহায়ক হবে না এবং প্রতিটি ট্যাপ করা মার্কারের চারপাশে একটি বৃত্ত আঁকা থাকলে এটি দেখতে বেশ কুৎসিত হবে!

এটি করার জন্য, ViewController বাস্তবায়ন আপডেট করুন এভাবে:

@implementation ViewController {
  GMSMapView *_mapView;
  GMUClusterManager *_clusterManager;
  GMSCircle *_circ;
}
  1. একটি মার্কার ট্যাপ করা হলে বৃত্ত আঁকুন।

mapView:didTapMarker পদ্ধতির নীচে, iOS SDK-এর GMSCircle ক্লাসের একটি দৃষ্টান্ত তৈরি করতে নিম্নলিখিত কোডটি যোগ করুন একটি নতুন 800 মিটার ব্যাসার্ধের বৃত্ত আঁকতে circleWithPosition:radius: কল করে এবং এটিকে ট্যাপ করা মার্কারের অবস্থানে পাস করে আপনি মানচিত্র রিসেন্টার করার সময় আপনি উপরে করেছেন।

_circ = [GMSCircle circleWithPosition:marker.position radius:800];
  1. বৃত্ত স্টাইল.

ডিফল্টরূপে, GMSCircle একটি কালো স্ট্রোক এবং স্বচ্ছ ভরাট সহ একটি বৃত্ত আঁকে। এটি ব্যাসার্ধ দেখানোর জন্য কাজ করবে, কিন্তু খুব ভাল দেখায় না, এবং দেখতে একটু কঠিন। এরপর, বৃত্তের fillColor বৈশিষ্ট্যে একটি UIColor বরাদ্দ করে স্টাইলিং উন্নত করতে বৃত্তটিকে একটি পূরণ রঙ দিন। নিম্নলিখিত কোডটি 50% স্বচ্ছতার সাথে একটি ধূসর ফিল যোগ করবে:

_circ.fillColor = [UIColor colorWithRed: 0.67 green: 0.67 blue: 0.67 alpha: 0.5];
  1. মানচিত্রে বৃত্ত রেন্ডার করুন।

ঠিক যেমন আপনি আগে মার্কার তৈরি করেছিলেন, আপনি লক্ষ্য করবেন যে শুধুমাত্র GMSCircle এর একটি উদাহরণ তৈরি করলে তা মানচিত্রে প্রদর্শিত হবে না। এটি করার জন্য, বৃত্তের map সম্পত্তিতে কেবল মানচিত্র দৃশ্যের উদাহরণ বরাদ্দ করুন।

_circ.map = _mapView;
  1. পূর্বে রেন্ডার করা চেনাশোনাগুলি সরান৷

আগেই উল্লেখ করা হয়েছে, ম্যাপে চেনাশোনা যোগ করা চালিয়ে যাওয়া খুব ভালো ব্যবহারকারীর অভিজ্ঞতা হবে না। পূর্ববর্তী ট্যাপ ইভেন্ট দ্বারা রেন্ডার করা চেনাশোনাটি সরাতে, _circ এর map বৈশিষ্ট্যটি mapView:didTapMarker এর শীর্ষে nil সেট করুন।

_circ.map = nil;

অ্যাপটি পুনরায় লোড করুন এবং একটি মার্কারে আলতো চাপুন। আপনি একটি নতুন বৃত্ত আঁকা দেখতে পাবেন যখনই একটি মার্কার ট্যাপ করা হয় এবং পূর্বে রেন্ডার করা কোনো বৃত্ত সরানো হয়।

342520482a888519.png

রিক্যাপ করার জন্য, এই ধাপে আপনি যখনই একটি মার্কার ট্যাপ করা হয় তখন একটি বৃত্ত রেন্ডার করতে আপনি GMSCircle ক্লাস ব্যবহার করেছেন।

আপনি mapView:didTapMarker পদ্ধতিটি এইরকম হওয়া উচিত:

- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
  _circ.map = nil;
  [_mapView animateToLocation:marker.position];

  if ([marker.userData conformsToProtocol:@protocol(GMUCluster)]) {
    [_mapView animateToZoom:_mapView.camera.zoom +1];
    return YES;
  }

  _circ = [GMSCircle circleWithPosition:marker.position radius:800];
  _circ.fillColor = [UIColor colorWithRed: 0.67 green: 0.67 blue: 0.67 alpha: 0.5];
  _circ.map = _mapView;
  return NO;
}

10. অভিনন্দন

আপনি সফলভাবে Google মানচিত্র প্ল্যাটফর্ম ব্যবহার করে আপনার প্রথম iOS অ্যাপ তৈরি করেছেন, যার মধ্যে iOS এর জন্য মানচিত্র SDK লোড করা, একটি মানচিত্র লোড করা, মার্কারগুলির সাথে কাজ করা, মানচিত্রে নিয়ন্ত্রণ করা এবং অঙ্কন করা এবং ব্যবহারকারীর মিথস্ক্রিয়া যোগ করা।

সম্পূর্ণ কোডটি দেখতে, সমাপ্ত প্রকল্পটি /solution ডিরেক্টরিটি দেখুন।

এরপর কি?

এই কোডল্যাবে, আমরা iOS এর জন্য Maps SDK দিয়ে আপনি যা করতে পারেন তার মূল বিষয়গুলিই কভার করেছি৷ এর পরে, মানচিত্রে এই বৈশিষ্ট্যগুলির মধ্যে কয়েকটি যোগ করার চেষ্টা করুন:

আপনি ওয়েবে Google মানচিত্র প্ল্যাটফর্মের সাথে কাজ করতে পারেন এমন আরও উপায় শেখা চালিয়ে যেতে, এই লিঙ্কগুলি দেখুন: