আপনি ম্যাপের উপরে টাইল লেয়ার হিসেবে ছবি যোগ করতে পারবেন। টাইল লেয়ার নির্দিষ্ট জুম লেভেলে ম্যাপ টাইলের উপরে প্লেস করা হয়। পর্যাপ্ত টাইল থাকলে, আপনি একাধিক জুম লেভেলে, সম্পূর্ণ ম্যাপের জন্য Google-এর ম্যাপ ডেটা সাপ্লিমেন্ট করতে পারবেন।

ভূমিকা
টাইল লেয়ার, যাকে কখনও কখনও টাইল ওভারলে বলা হয়, আপনাকে Google-এর বেস ম্যাপ টাইলের উপরে
ছবি সুপারইম্পোজ করতে দেয়। আপনার অ্যাপে আকর্ষণীয় স্থান বা ট্রাফিক তথ্য এবং স্থানীয় ছবির মতো ডেটা যোগ করতে এই ফিচার ব্যবহার করুন। kGMSTypeNone ম্যাপ টাইপের সাথে একত্রিত হলে, টাইল লেয়ার আপনাকে Google-এর বেস ম্যাপ ডেটা আপনার নিজের ডেটা দিয়ে কার্যকরভাবে প্রতিস্থাপন করতে দেয়।
ম্যাপে সাধারণত বড় ভৌগোলিক এলাকা কভার করে এমন বিস্তারিত ছবি যোগ করতে চাইলে, টাইল লেয়ার উপযোগী হয়। অন্যদিকে, ম্যাপের কোনও একটি পয়েন্টে একটি ছবি ফিক্স করতে চাইলে, গ্রাউন্ড ওভারলে উপযোগী।
টাইল স্থানাঙ্ক
Maps API প্রতিটি জুম লেভেলে ছবিকে বর্গাকার ম্যাপ টাইলসের সেটে ভাগ করে, যা একটি অর্ডার করা গ্রিডে সাজানো থাকে। কোনও ম্যাপ নতুন লোকেশনে বা নতুন জুম লেভেলে স্ক্রল করা হলে, Maps API নির্ধারণ করে যে কোন টাইলগুলি প্রয়োজন এবং সেগুলি পাওয়ার জন্য টাইলগুলির একটি সেটে অনুবাদ করে।
মার্কেটর প্রজেকশনের Google ইমপ্লিমেন্টেশনে, (০,০) কোঅর্ডিনেট সহ টাইলটি
সবসময় ম্যাপের উত্তর-পশ্চিম কোণে থাকে, যেখানে x-এর মান
পশ্চিম থেকে পূর্ব দিকে এবং y-এর মান উত্তর থেকে দক্ষিণ দিকে বৃদ্ধি পায়।
সেই উৎস থেকে x,y কোঅর্ডিনেট ব্যবহার করে টাইল ইন্ডেক্স করা হয়। যেমন, জুম লেভেল ২-এ, যখন পৃথিবীকে ১৬টি টাইলসে ভাগ করা হয়, তখন প্রতিটি টাইলসকে
একটি অনন্য x,y পেয়ার দ্বারা রেফারেন্স করা যেতে পারে:

প্রতিটি ম্যাপ টাইল হল ২৫৬x২৫৬ পয়েন্টের বর্গক্ষেত্র। জুম লেভেল ০-তে, পুরো পৃথিবী একটি টাইল হিসেবে রেন্ডার করা হয়। প্রতিটি জুম লেভেল ম্যাগনিফিকেশনকে দুইয়ের গুণক হিসেবে বাড়ায়। যেমন, জুম লেভেল ১-এ ম্যাপ ২x২ গ্রিড টাইল হিসেবে, জুম লেভেল ২-এ ৪x৪ গ্রিড টাইল হিসেবে এবং জুম লেভেল ৩-এ ৮x৮ গ্রিড টাইল হিসেবে রেন্ডার করা হয়। টাইল লেয়ারের জন্য ছবি তৈরি করতে, আপনি যে জুম লেভেল সাপোর্ট করতে চান, তার প্রতিটি টাইল লেয়ারের জন্য ২৫৬x২৫৬ পয়েন্টের ছবি তৈরি করুন।
টাইল লেয়ার যোগ করুন
GMSURLTileLayerঅবজেক্ট বাGMSTileLayerবাGMSSyncTileLayer-এর কাস্টম সাবক্লাস ইনস্ট্যান্টিয়েট করুন।- অন্যান্য টাইল লেয়ারের সাথে সম্পর্কিত পজিশন অ্যাডজাস্ট করতে,
zIndexপ্রপার্টি পরিবর্তন করুন। GMSTileLayerঅবজেক্টেরmapপ্রপার্টি সেট করে ম্যাপে অ্যাসাইন করুন।
iOS-এর জন্য Maps SDK তিনটি ক্লাস প্রদান করে যা টাইল লেয়ার প্রয়োগ করতে
ব্যবহার করা যেতে পারে। প্রতিটি ক্লাসের সাথে, আপনাকে নির্দিষ্ট করতে হবে যে কীভাবে {x,y,zoom} স্থানাঙ্কের প্রদত্ত সেটের জন্য
সঠিক ম্যাপ টাইল আনা যায়। উপলভ্য
বিকল্পগুলি হল:
- সাবক্লাস
GMSSyncTileLayer,tileForX:y:zoom-এর ইমপ্লিমেন্টেশন প্রদান করে যাUIImageইনস্ট্যান্স রিটার্ন করে। - সাবক্লাস
GMSTileLayer, অ্যাসিঙ্ক্রোনাস পদ্ধতিরrequestTileForX:y:zoomইমপ্লিমেন্টেশন প্রদান করে যা পরে টাইল ইমেজ সহ কলব্যাক করে। GMSTileURLConstructorব্লক প্রদান করে, URL থেকে অটোমেটিক টাইল ফেচ করতে, আগে থেকে থাকা ক্লাস,GMSURLTileLayerব্যবহার করুন।GMSURLTileLayerহল একটি কংক্রিট ক্লাস যার সাবক্লাস করা যাবে না।
GMSSyncTileLayer বা GMSTileLayer-এর সাবক্লাসিংয়ের ক্ষেত্রে, nil টাইল ফলাফল প্রদান করলে,
iOS-এর জন্য Maps SDK-কে জানানো হবে যে ডেটা উপলভ্য নেই,
তবে ভবিষ্যতে উপলভ্য হতে পারে। অন্যথায়,
এই লোকেশনে কোনও টাইল নেই তা বোঝাতে kGMSTileLayerNoTile
রিটার্ন করুন।
GMSURLTileLayer-এর জন্য, GMSTileURLConstructor থেকে nil রিটার্ন করলে
বোঝা যাবে যে এই লোকেশনে কোনও টাইল নেই।
URL থেকে টাইল ফেচ করতে GMSURLTileLayer ব্যবহার করুন
GMSURLTileLayer-এর জন্য সাবক্লাসিংয়ের প্রয়োজন নেই, তবে আপনাকে
GMSTileURLConstructor ব্লক প্রয়োগ করতে হবে। নিচের কোড থেকে জানা যায় যে কীভাবে
GMSURLTileLayer ব্যবহার করে বহুতল বিল্ডিংয়ের ফ্লোর প্ল্যান দেখানো যায়।
Swift
let floor = 1 // Implement GMSTileURLConstructor // Returns a Tile based on the x,y,zoom coordinates, and the requested floor let urls: GMSTileURLConstructor = { (x, y, zoom) in let url = "https://www.example.com/floorplans/L\(floor)_\(zoom)_\(x)_\(y).png" return URL(string: url) } // Create the GMSTileLayer let layer = GMSURLTileLayer(urlConstructor: urls) // Display on the map at a specific zIndex layer.zIndex = 100 layer.map = mapView
Objective-C
NSInteger floor = 1; // Create the GMSTileLayer GMSURLTileLayer *layer = [GMSURLTileLayer tileLayerWithURLConstructor:^NSURL * _Nullable(NSUInteger x, NSUInteger y, NSUInteger zoom) { NSString *url = [NSString stringWithFormat:@"https://www.example.com/floorplans/L%ld_%lu_%lu_%lu.png", (long)floor, (unsigned long)zoom, (unsigned long)x, (unsigned long)y]; return [NSURL URLWithString:url]; }]; // Display on the map at a specific zIndex layer.zIndex = 100; layer.map = mapView;
UIImage হিসেবে টাইল পরিবেশন করতে GMSSyncTileLayer সাবক্লাস করুন
GMSSyncTileLayer এবং GMSTileLayer হল অ্যাবস্ট্র্যাক্ট ক্লাস যা সাবক্লাস করার জন্য
ডিজাইন করা হয়েছে। UIImage-এর মতো টাইল দেখাতে আপনি এইসব ক্লাস ব্যবহার করতে পারবেন। নিচের
উদাহরণে দেখানো হয়েছে যে GMSSyncTileLayer-এর সাবক্লাস তৈরি করে ম্যাপের কিছু টাইলসের উপর কীভাবে কাস্টম ছবি
রেন্ডার করতে হয়।
Swift
class TestTileLayer: GMSSyncTileLayer { override func tileFor(x: UInt, y: UInt, zoom: UInt) -> UIImage? { // On every odd tile, render an image. if (x % 2 == 1) { return UIImage(named: "australia") } else { return kGMSTileLayerNoTile } } }
Objective-C
@interface TestTileLayer : GMSSyncTileLayer @end @implementation TestTileLayer - (UIImage *)tileForX:(NSUInteger)x y:(NSUInteger)y zoom:(NSUInteger)zoom { // On every odd tile, render an image. if (x % 2 == 1) { return [UIImage imageNamed:@"australia"]; } else { return kGMSTileLayerNoTile; } } @end
আপনার ম্যাপে লেয়ার যোগ করতে, অবজেক্ট ইনস্ট্যান্টিয়েট করুন এবং এর ম্যাপ প্রপার্টি সেট করুন।
Swift
let layer = TestTileLayer() layer.map = mapView
Objective-C
GMSTileLayer *layer = [[TestTileLayer alloc] init]; layer.map = mapView;
Retina ডিভাইসের জন্য হাই DPI টাইল
আপনি GMSSyncTileLayer
অথবা GMSURLTileLayer-এর সাথে হাই DPI ছবি ব্যবহার করতে পারবেন, এর জন্য tileSize-কে ৫১২-এ সেট করতে হবে।
tileSize প্রপার্টি থেকে জানা যায় যে রিটার্ন করা টাইল ইমেজ কত পিক্সেল হিসেবে
দেখানো হবে; এটি ডিফল্ট হিসেবে ২৫৬ পিক্সেল থাকে — নন-রেটিনা ডিভাইসে
Google Maps টাইলের ডাইমেনশন।
আপনি যদি হাই DPI ডিভাইসে সাধারণ DPI টাইল দেখান, তাহলে tileSize-কে ৫১২-এ সেট করে
ছবির সাইজ বাড়াতে পারবেন। মনে রাখবেন, ছবির সাইজ বড় করলে ছবির কোয়ালিটি
খারাপ হতে পারে, বিশেষ করে সূক্ষ্ম লাইন বা টেক্সটের ক্ষেত্রে। সেরা ফলাফলের জন্য, ডিসপ্লের সাথে
tileSize এবং ছবির ডিপিআই ম্যাচ করুন। Retina ডিভাইসে দেখানো ম্যাপ
সবচেয়ে ভালো দেখাবে যখন ৫১২-এর tileSize সহ হাই DPI ছবি দেখানো হবে;
যদিও Retina নয় এমন ডিভাইসে দেখানো ম্যাপ সাধারণ ছবি
এবং ২৫৬-এর ডিফল্ট tileSize সহ ভালো দেখাবে।
পুরনো টাইল মুছুন
লেয়ারের মাধ্যমে প্রদান করা টাইল 'পুরনো' হয়ে গেলে, রিফ্রেশ করার জন্য লেয়ারে
clearTileCache পদ্ধতি কল করতে হবে। এর ফলে
এই লেয়ারের সব টাইল আবার লোড হবে।
Swift
layer.clearTileCache()
Objective-C
[layer clearTileCache];