আকার

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস জাভাস্ক্রিপ্ট

iOS-এর জন্য Maps SDK আপনার মানচিত্রে বিভিন্ন আকৃতি যোগ করার উপায় প্রদান করে। নিম্নলিখিত আকৃতিগুলো সমর্থিত:

  • পলিলাইন হলো একাধিক পরস্পর সংযুক্ত রেখাংশের একটি ধারা, যা দিয়ে আপনার ইচ্ছামতো যেকোনো আকৃতি তৈরি করা যায় এবং মানচিত্রে পথ ও রাস্তা চিহ্নিত করতে এটি ব্যবহার করা যেতে পারে।
  • বহুভুজ হলো একটি আবদ্ধ আকৃতি যা মানচিত্রে এলাকা চিহ্নিত করতে ব্যবহার করা যায়।
  • বৃত্ত হলো পৃথিবীর পৃষ্ঠে বৃত্তের একটি ভৌগোলিকভাবে সঠিক প্রতিবিম্ব।

আপনি প্রতিটি আকৃতির চেহারা নানা উপায়ে পরিবর্তন করতে পারেন।

পলিলাইন

পলিলাইন আপনাকে ম্যাপের উপর রেখা আঁকতে দেয়। একটি GMSPolyline অবজেক্ট একাধিক রেখাংশ হিসেবে প্রদর্শিত অবস্থানসমূহের একটি ক্রমিক অনুক্রমকে উপস্থাপন করে। আপনি GMSStrokeStyle ব্যবহার করে একটি পলিলাইনের রঙ নির্ধারণ করতে পারেন।

একটি পলিলাইন তৈরি করতে, আপনাকে দুই বা ততোধিক পয়েন্ট সহ একটি সংশ্লিষ্ট GMSMutablePath অবজেক্ট তৈরি করে এর পথ নির্দিষ্ট করতে হবে। প্রতিটি CLLocationCoordinate2D পৃথিবীর পৃষ্ঠের একটি বিন্দুকে প্রতিনিধিত্ব করে। আপনি যে ক্রমে পয়েন্টগুলিকে পথে যুক্ত করেন, সেই ক্রম অনুসারে তাদের মধ্যে রেখাংশ আঁকা হয়। আপনি addCoordinate: অথবা addLatitude:longitude: মেথড ব্যবহার করে পথে পয়েন্ট যুক্ত করতে পারেন।

সুইফট

let path = GMSMutablePath()
path.add(CLLocationCoordinate2D(latitude: -33.85, longitude: 151.20))
path.add(CLLocationCoordinate2D(latitude: -33.70, longitude: 151.40))
path.add(CLLocationCoordinate2D(latitude: -33.73, longitude: 151.41))
let polyline = GMSPolyline(path: path)
      

উদ্দেশ্য-সি

GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(-33.85, 151.20)];
[path addCoordinate:CLLocationCoordinate2DMake(-33.70, 151.40)];
[path addCoordinate:CLLocationCoordinate2DMake(-33.73, 151.41)];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
      

একটি পলিলাইন যোগ করা

  1. একটি GMSMutablePath অবজেক্ট তৈরি করুন।
  2. addCoordinate: অথবা addLatitude:longitude: ` মেথড ব্যবহার করে পাথের পয়েন্টগুলো সেট করুন।
  3. আর্গুমেন্ট হিসেবে পাথটি ব্যবহার করে একটি নতুন GMSPolyline অবজেক্ট তৈরি করুন।
  4. প্রয়োজন অনুযায়ী strokeWidth এবং strokeColor -এর মতো অন্যান্য প্রোপার্টি সেট করুন।
  5. GMSPolyline এর map প্রপার্টি সেট করুন।
  6. পলিলাইনটি মানচিত্রে প্রদর্শিত হয়।

নিম্নলিখিত কোড স্নিপেটটি একটি ম্যাপে একটি আয়তক্ষেত্র যোগ করে:

সুইফট

let rectanglePath = GMSMutablePath()
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))

let rectangle = GMSPolyline(path: path)
rectangle.map = mapView
      

উদ্দেশ্য-সি

GMSMutablePath *rectanglePath = [GMSMutablePath path];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];

GMSPolyline *rectangle = [GMSPolyline polylineWithPath:path];
rectangle.map = mapView;
      

একটি আয়তক্ষেত্রাকার পলিলাইন

একটি পলিলাইন অপসারণ করা

আপনার GMSPolyline এর ' map ' প্রপার্টিকে ' nil এ সেট করে আপনি ম্যাপ থেকে একটি পলিলাইন মুছে ফেলতে পারেন। বিকল্পভাবে, আপনি GMSMapView clear মেথডটি কল করে ম্যাপের সমস্ত ওভারলে (পলিলাইন এবং অন্যান্য শেপ সহ) মুছে ফেলতে পারেন।

সুইফট

mapView.clear()
      

উদ্দেশ্য-সি

[mapView clear];
      

একটি পলিলাইন কাস্টমাইজ করা

GMSPolyline অবজেক্টটি লাইনের চেহারা নিয়ন্ত্রণের জন্য বেশ কিছু প্রোপার্টি প্রদান করে। এটি নিম্নলিখিত অপশনগুলো সমর্থন করে:

strokeWidth
সম্পূর্ণ রেখাটির প্রস্থ, স্ক্রিন পয়েন্টে। এর ডিফল্ট মান ১। ম্যাপ জুম করা হলে প্রস্থটি পরিবর্তিত হয় না।
geodesic
যখন YES করা হয়, তখন এই পলিলাইন এজটিকে একটি জিওডেসিক হিসেবে রেন্ডার করা হয়। জিওডেসিক সেগমেন্টগুলো পৃথিবীর পৃষ্ঠ বরাবর ক্ষুদ্রতম পথ অনুসরণ করে এবং মারকেটর প্রজেকশনযুক্ত মানচিত্রে বক্ররেখা হিসেবে প্রদর্শিত হতে পারে। নন-জিওডেসিক সেগমেন্টগুলো মানচিত্রে সরলরেখা হিসেবে অঙ্কিত হয়। ডিফল্ট মান হলো NO
spans
একটি পলিলাইনের এক বা একাধিক অংশের রঙ নির্দিষ্ট করতে এটি ব্যবহৃত হয়। `spans` প্রপার্টিটি হলো ` GMSStyleSpan অবজেক্টের একটি অ্যারে। একটি পলিলাইনের রঙ পরিবর্তন করার জন্য spans প্রপার্টি সেট করাই হলো সবচেয়ে পছন্দের উপায়।
strokeColor
পলিলাইনের রঙ নির্দিষ্টকারী একটি UIColor অবজেক্ট। এর ডিফল্ট মান হলো blueColor । যদি spans সেট করা থাকে, তাহলে strokeColor প্রপার্টিটি উপেক্ষা করা হয়।

নিম্নলিখিত কোড স্নিপেটটি জিওডেসিক ইন্টারপোলেশনের মাধ্যমে মেলবোর্ন থেকে পার্থ পর্যন্ত একটি পুরু পলিলাইন যুক্ত করে।

সুইফট

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView
      

উদ্দেশ্য-সি

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.geodesic = YES;
polyline.map = mapView;
      

ম্যাপে একটি পলিলাইন যুক্ত করার পরে তা পরিবর্তন করতে, GMSPolyline অবজেক্টটি অবশ্যই নিজের কাছে রাখুন।

সুইফট

polyline.strokeColor = .blue
      

উদ্দেশ্য-সি

polyline.strokeColor = [UIColor blueColor];
      

পলিলাইনের রঙ পরিবর্তন করা

পলিলাইনগুলো ম্যাপের উপর একাধিক সেগমেন্ট হিসেবে আঁকা হয়। আপনি spans প্রপার্টি ব্যবহার করে আলাদা আলাদা সেগমেন্টের অথবা পুরো লাইনের রঙ পরিবর্তন করতে পারেন। যদিও এই প্রপার্টিটি আপনাকে একটি পলিলাইনের রঙের উপর বিস্তারিত নিয়ন্ত্রণ দেয়, তবুও এমন কিছু সুবিধা রয়েছে যা আপনাকে পুরো লাইনে একটিমাত্র স্টাইল প্রয়োগ করার সুযোগ দেয়।

নিচের কোড স্নিপেটটিতে ` spanWithColor: ` মেথড ব্যবহার করে পুরো লাইনের রঙ লাল করা হয়েছে।

সুইফট

polyline.spans = [GMSStyleSpan(color: .red)]
      

উদ্দেশ্য-সি

polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
      

বিকল্পভাবে, যদি আপনার কাছে আগে থেকেই একটি GMSStrokeStyle অবজেক্ট থাকে, তাহলে আপনি spanWithStyle: মেথডটি ব্যবহার করতে পারেন।

সুইফট

let solidRed = GMSStrokeStyle.solidColor(.red)
polyline.spans = [GMSStyleSpan(style: solidRed)]
      

উদ্দেশ্য-সি

GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]];
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];
      

iOS-এর জন্য Maps SDK-এর 1.7 সংস্করণের আগে, একটি GMSPolyline এর সম্পূর্ণ রঙ নির্ধারণ করার জন্য strokeColor একটিমাত্র প্রপার্টি উপলব্ধ ছিল। spans প্রপার্টিটি strokeColor চেয়ে অগ্রাধিকার পায়।

সুইফট

polyline.strokeColor = .red
      

উদ্দেশ্য-সি

polyline.strokeColor = [UIColor redColor];
      

শৈলী

আপনার অ্যাপ যদি একই স্ট্রোক কালার একাধিকবার প্রয়োগ করে, তবে একটি পুনঃব্যবহারযোগ্য স্টাইল নির্ধারণ করা আপনার জন্য সুবিধাজনক হতে পারে। পলিলাইন স্টাইলগুলো GMSStrokeStyle অবজেক্ট ব্যবহার করে নির্দিষ্ট করা হয়। একটি স্ট্রোক স্টাইল একটি সলিড কালার অথবা এক রঙ থেকে অন্য রঙে একটি গ্রেডিয়েন্ট হতে পারে। একবার একটি স্টাইল তৈরি করে ফেললে, আপনি ` spanWithStyle: মেথড ব্যবহার করে এটিকে একটি GMSStyleSpan এ প্রয়োগ করতে পারেন।

সুইফট

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
let solidBlue = GMSStrokeStyle.solidColor(.blue)
let solidBlueSpan = GMSStyleSpan(style: solidBlue)
let redYellow = GMSStrokeStyle.gradient(from: .red, to: .yellow)
let redYellowSpan = GMSStyleSpan(style: redYellow)
      

উদ্দেশ্য-সি

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
GMSStrokeStyle *solidBlue = [GMSStrokeStyle solidColor:[UIColor blueColor]];
GMSStyleSpan *solidBlueSpan = [GMSStyleSpan spanWithStyle:solidBlue];
GMSStrokeStyle *redYellow =
    [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]];
GMSStyleSpan *redYellowSpan = [GMSStyleSpan spanWithStyle:redYellow];
      

একটি span -এর স্টাইল পলিলাইনের শেষ পর্যন্ত, অথবা নতুন কোনো স্টাইল সেট না করা পর্যন্ত চলতে থাকবে। একটি পলিলাইনের spans প্রপার্টিকে একটিমাত্র GMSStyleSpan এ সেট করে আপনি পুরো লাইনটির রঙ পরিবর্তন করতে পারেন। উদাহরণটিতে দেখানো হয়েছে কীভাবে পলিলাইনের সম্পূর্ণ দৈর্ঘ্য জুড়ে একটি গ্রেডিয়েন্ট প্রয়োগ করতে হয়।

সুইফট

polyline.spans = [GMSStyleSpan(style: redYellow)]
      

উদ্দেশ্য-সি

polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
      

পৃথক রেখাংশগুলির রঙ পরিবর্তন করা

আপনি যদি আপনার পলিলাইনের প্রতিটি অংশকে আলাদাভাবে স্টাইল করতে চান, তাহলে GMSStyleSpan অবজেক্টের একটি অ্যারে তৈরি করে এবং এটিকে spans প্রপার্টিতে পাস করার মাধ্যমে তা করতে পারেন। ডিফল্টরূপে, অ্যারের প্রতিটি আইটেম সংশ্লিষ্ট লাইন সেগমেন্টের রঙ নির্ধারণ করে। যদি লাইনের সেগমেন্টের চেয়ে অ্যারেতে বেশি উপাদান থাকে, তাহলে অতিরিক্ত উপাদানগুলো উপেক্ষা করা হবে। যদি অ্যারেতে কম উপাদান থাকে, তাহলে শেষ GMSStyleSpan লাইনের বাকি অংশের রঙ নির্ধারণ করে।

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

সুইফট

polyline.spans = [
  GMSStyleSpan(style: solidRed),
  GMSStyleSpan(style: solidRed),
  GMSStyleSpan(style: redYellow)
]
      

উদ্দেশ্য-সি

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:redYellow]];
      

আপনি ` spanWithStyle:segments: ` মেথডটি ব্যবহার করে একসাথে একাধিক সেগমেন্টের জন্য স্টাইল সেট করতে পারেন। উদাহরণস্বরূপ, নিচের কোডটি উপরেরটির সমতুল্য। শেষ GMSStyleSpan এর সেগমেন্টের দৈর্ঘ্য সর্বদা উপেক্ষা করা হয়, কারণ এই স্টাইলটি লাইনের বাকি অংশ বর্ণনা করতে ব্যবহৃত হয়।

সুইফট

polyline.spans = [
  GMSStyleSpan(style: solidRed, segments:2),
  GMSStyleSpan(style: redYellow, segments:10)
]
      

উদ্দেশ্য-সি

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2],
                   [GMSStyleSpan spanWithStyle:redYellow segments:10]];
      

ভগ্নাংশ অংশ

সেগমেন্টগুলোকে ভগ্নাংশ হিসেবেও নির্দিষ্ট করা যেতে পারে। এটি ভগ্নাংশ সংখ্যক সেগমেন্টে স্টাইলটি প্রয়োগ করবে, যার ফলে একটি একক সেগমেন্ট বিভক্ত হয়ে যেতে পারে। প্রতিটি GMSStyleSpan তার পূর্ববর্তীটির ঠিক পরেই শুরু হয়: নীচের উদাহরণে, ধূসর রঙটি দ্বিতীয় সেগমেন্টের ½ অংশ থেকে শুরু হয়ে তৃতীয় সেগমেন্টের ½ অংশ পর্যন্ত চলতে থাকে।

সুইফট

polyline.spans = [
  GMSStyleSpan(style: solidRed, segments: 2.5),
  GMSStyleSpan(color: .gray),
  GMSStyleSpan(color: .purple, segments: 0.75),
  GMSStyleSpan(style: redYellow)
]
      

উদ্দেশ্য-সি

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2.5],
                   [GMSStyleSpan spanWithColor:[UIColor grayColor]],
                   [GMSStyleSpan spanWithColor:[UIColor purpleColor] segments:0.75],
                   [GMSStyleSpan spanWithStyle:redYellow]];
      

একটি পলিলাইনে পুনরাবৃত্তিমূলক রঙের প্যাটার্ন যোগ করা

যদি আপনি কোনো পলিলাইনে একটি প্যাটার্ন যোগ করতে চান, তাহলে আপনি GMSGeometryUtils এর GMSStyleSpans ইউটিলিটি মেথডটি ব্যবহার করতে পারেন। GMSStyleSpans মেথডটি দুটি অ্যারে গ্রহণ করে যা একটি পুনরাবৃত্তিমূলক প্যাটার্ন নির্ধারণ করে। একটি অ্যারে সেই স্টাইলগুলো নির্ধারণ করে যা পুনরাবৃত্তি করা উচিত, এবং অন্যটি পুনরাবৃত্তির ব্যবধান নির্ধারণ করে। এগুলো একসাথে ব্যবহার করে আপনি এমন একটি প্যাটার্ন তৈরি করতে পারেন যা যেকোনো পলিলাইনের দৈর্ঘ্য বা উপলব্ধ সেগমেন্টের সংখ্যা নির্বিশেষে তার উপর প্রয়োগ করা যেতে পারে।

উদাহরণস্বরূপ, নিচের কোড স্নিপেটটি একটি কালো এবং সাদা পর্যায়ক্রমিক প্যাটার্ন সহ একটি পলিলাইন সংজ্ঞায়িত করে। এর দৈর্ঘ্যগুলিকে একটি রাম্ব লাইন (মার্কেটরে, এটি একটি সরলরেখা) বরাবর মিটার হিসাবে বিবেচনা করা হয়, কারণ এর টাইপটি kGMSLengthRhumb হিসাবে নির্দিষ্ট করা হয়েছে।

সুইফট

let styles = [
  GMSStrokeStyle.solidColor(.white),
  GMSStrokeStyle.solidColor(.black)
]
let lengths: [NSNumber] = [100000, 50000]
polyline.spans = GMSStyleSpans(
  polyline.path!,
  styles,
  lengths,
  GMSLengthKind.rhumb
)
      

উদ্দেশ্য-সি

NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]],
                    [GMSStrokeStyle solidColor:[UIColor blackColor]]];
NSArray *lengths = @[@100000, @50000];
polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
      

স্প্রাইট স্ট্যাম্পড পলিলাইন

স্প্রাইট স্ট্যাম্পড পলিলাইন আপনাকে আপনার পছন্দের একটি পুনরাবৃত্তিমূলক বিটম্যাপ ইমেজ ব্যবহার করে পলিলাইন তৈরি করার সুযোগ দেয়। আকৃতিগুলো একটি স্বচ্ছ ব্যাকগ্রাউন্ড স্ট্রোকসহ প্রদর্শিত হয়, কিন্তু লাইনের কোণায় স্ট্যাম্পটি কাটা পড়ে না — যা হাঁটার দিকনির্দেশ বোঝানোর জন্য ডট ব্যবহারের মতো ক্ষেত্রে এগুলোকে উপযোগী করে তোলে।

একটি স্প্রাইট স্ট্যাম্প করা পলিলাইন

আপনি GMSSpriteStyle ব্যবহার করে এবং GMSStrokeStyle এর stampStyle প্রপার্টির মাধ্যমে এটিকে স্ট্যাম্প হিসেবে সেট করে এই ফিচারটি ব্যবহার করতে পারেন।

সুইফট

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 20
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
let stampStyle = GMSSpriteStyle(image: image)
let transparentStampStroke = GMSStrokeStyle.transparentStroke(withStamp: stampStyle)
let span = GMSStyleSpan(style: transparentStampStroke)
polyline.spans = [span]
polyline.map = mapView
      

উদ্দেশ্য-সি

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
polyline.strokeWidth = 20;
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];

UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"];
GMSStrokeStyle *transparentStampStroke = [GMSStrokeStyle transparentStrokeWithStampStyle:[GMSSpriteStyle spriteStyleWithImage:image]];

GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:transparentStampStroke];
polyline.spans = @[span];
polyline.map = _mapView;
      

টেক্সচার স্ট্যাম্পড পলিলাইন

টেক্সচার স্ট্যাম্পড পলিলাইন আপনাকে আপনার পছন্দের একটি পুনরাবৃত্ত টেক্সচার ব্যবহার করে পলিলাইন তৈরি করার সুযোগ দেয়। আকারগুলো স্বচ্ছ, নিরেট রঙ বা গ্রেডিয়েন্ট ব্যাকগ্রাউন্ড স্ট্রোক সহ দেখানো যেতে পারে। জুম লেভেল পরিবর্তনের সাথে সাথে টেক্সচারের আকারও পরিবর্তিত হয়। নির্দিষ্ট কিছু জুম লেভেলে পাথের শেষ বা শুরুর দিকের অথবা পাথ পয়েন্টের ছবিগুলো খণ্ডিত হয়ে যায়।

একটি টেক্সচারযুক্ত পলিলাইন

আপনি GMSTextureStyle ব্যবহার করে এবং GMSStrokeStyle এর stampStyle প্রপার্টির মাধ্যমে এটিকে স্ট্যাম্প হিসেবে সেট করে এই ফিচারটি ব্যবহার করতে পারেন।

সুইফট

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 20
let redWithStamp = GMSStrokeStyle.solidColor(.red)
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
redWithStamp.stampStyle = GMSTextureStyle(image: image)
let span = GMSStyleSpan(style: redWithStamp)
polyline.spans = [span]
polyline.map = mapView
      

উদ্দেশ্য-সি

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;
GMSStrokeStyle *redWithStamp = [GMSStrokeStyle solidColor:[UIColor redColor]];

UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere
redWithStamp.stampStyle = [GMSTextureStyle textureStyleWithImage:image];

GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:redWithStamp];
polyline.spans = @[span];
polyline.map = _mapView;
      

মানচিত্রের সক্ষমতা

GMSMapView এর mapCapabilities প্রপার্টিটি ম্যাপ-নির্দিষ্ট বৈশিষ্ট্যগুলির জন্য প্রোগ্রাম্যাটিক চেকিং যোগ করে। নির্দিষ্ট API কল করার আগে কিছু নির্দিষ্ট ম্যাপ capabilities উপলব্ধ আছে কিনা তা জানতে চাইলে এটি কার্যকর। এই কোয়েরিটি নির্ধারণ করে যে ম্যাপ ভিউটি স্প্রাইট স্ট্যাম্পড পলিলাইন সমর্থন করে কিনা।

সুইফট

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 20
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
let spans: [GMSStyleSpan]
if (mapView.mapCapabilities.contains(.spritePolylines)) {
  let spriteStyle = GMSSpriteStyle(image: image)
  let stroke = GMSStrokeStyle.transparentStroke(withStamp: spriteStyle)
  spans = [ GMSStyleSpan(style: stroke) ]
} else {
  let stroke = GMSStrokeStyle.solidColor(.clear)
  stroke.stampStyle = GMSTextureStyle(image: image)
  spans = [ GMSStyleSpan(style: stroke) ]
}
polyline.spans = spans
polyline.map = mapView
      

উদ্দেশ্য-সি

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];

UIImage *_Nonnull image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere

NSArray<GMSStyleSpan *> * spans;
if (_mapView.mapCapabilities & GMSMapCapabilityFlagsSpritePolylines) {
  GMSSpriteStyle *spriteStyle = [GMSSpriteStyle spriteStyleWithImage:image];
  GMSStrokeStyle *stroke = [GMSStrokeStyle transparentStrokeWithStampStyle:spriteStyle];
  spans = @[ [GMSStyleSpan spanWithStyle:stroke] ];
} else {
  GMSStrokeStyle *stroke = [GMSStrokeStyle solidColor:UIColor.clearColor];
  stroke.stampStyle = [GMSTextureStyle textureStyleWithImage:image];
  spans = @[ [GMSStyleSpan spanWithStyle:stroke] ];
}

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;
polyline.spans = spans;
polyline.map = _mapView;
      

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

বহুভুজ

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

আপনি একটি GMSPolyline যোগ করার মতোই একটি GMSPolygon ম্যাপে যোগ করতে পারেন। প্রথমে, একটি সংশ্লিষ্ট GMSMutablePath অবজেক্ট তৈরি করে এবং তাতে পয়েন্ট যোগ করে এর পাথ নির্দিষ্ট করুন। এই পয়েন্টগুলো পলিগনটির রূপরেখা তৈরি করে। প্রতিটি CLLocationCoordinate2D পৃথিবীর পৃষ্ঠের একটি বিন্দুকে প্রতিনিধিত্ব করে। আপনি পাথে যে ক্রমে পয়েন্টগুলো যোগ করবেন, সেই ক্রম অনুসারে পয়েন্টগুলোর মধ্যে রেখাংশ আঁকা হবে।

একটি বহুভুজ যোগ করুন

  1. একটি GMSMutablePath অবজেক্ট তৈরি করুন।
  2. addCoordinate: ` অথবা addLatitude:longitude: ` মেথড ব্যবহার করে পাথে পয়েন্টগুলো সেট করুন। এই পয়েন্টগুলো পলিগনের রূপরেখা তৈরি করে।
  3. আর্গুমেন্ট হিসেবে পাথটি ব্যবহার করে একটি নতুন GMSPolygon অবজেক্ট তৈরি করুন।
  4. প্রয়োজন অনুযায়ী strokeWidth , strokeColor এবং fillColor এর মতো অন্যান্য প্রোপার্টিগুলো সেট করুন।
  5. GMSMapView অবজেক্টে পলিগনটি নির্ধারণ করতে GMSPolygon.map প্রপার্টিটি সেট করুন।
  6. বহুভুজটি মানচিত্রে প্রদর্শিত হয়।

নিম্নলিখিত কোড স্নিপেটটি একটি ম্যাপে একটি আয়তক্ষেত্র যোগ করে।

সুইফট

// Create a rectangular path
let rect = GMSMutablePath()
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))

// Create the polygon, and assign it to the map.
let polygon = GMSPolygon(path: rect)
polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05);
polygon.strokeColor = .black
polygon.strokeWidth = 2
polygon.map = mapView
      

উদ্দেশ্য-সি

// Create a rectangular path
GMSMutablePath *rect = [GMSMutablePath path];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];

// Create the polygon, and assign it to the map.
GMSPolygon *polygon = [GMSPolygon polygonWithPath:rect];
polygon.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
polygon.strokeColor = [UIColor blackColor];
polygon.strokeWidth = 2;
polygon.map = mapView;
      

ম্যাপে পলিগন যোগ করার আগে এবং যোগ করার পরেও আপনি এর চেহারা পরিবর্তন করতে পারেন।

একটি বহুভুজ অপসারণ করা

একটি পলিগন অপসারণ করতে, এর GMSPolygon.map প্রপার্টিকে nil এ সেট করুন এবং layer তার প্যারেন্ট থেকে ডিটাচ করুন।

সুইফট

 polygon.map = nil
 polygon.layer.removeFromSuperLayer()

উদ্দেশ্য-সি

 polygon.map = nil;
 [polygon.layer removeFromSuperlayer];
 

বৃত্ত

সাধারণ GMSPolygon ক্লাস ছাড়াও, iOS-এর জন্য Maps SDK-তে GMSCircle অন্তর্ভুক্ত রয়েছে, যা দিয়ে পৃথিবীর পৃষ্ঠে বৃত্ত আঁকা যায়।

একটি বৃত্ত আঁকতে হলে, আপনাকে নিম্নলিখিত দুটি বৈশিষ্ট্য নির্দিষ্ট করতে হবে:

  • CLLocationCoordinate2D হিসেবে position
  • radius মিটারে।

একটি বৃত্তকে পৃথিবীর পৃষ্ঠের সেই সমস্ত বিন্দুর সেট হিসাবে সংজ্ঞায়িত করা হয়, যেগুলি প্রদত্ত center থেকে radius মিটার দূরে অবস্থিত। Maps API দ্বারা ব্যবহৃত মারকেটর প্রজেকশন যেভাবে একটি সমতল পৃষ্ঠে গোলক রেন্ডার করে, তার কারণে নিরক্ষরেখার কাছাকাছি অবস্থিত হলে এটি মানচিত্রে প্রায় একটি নিখুঁত বৃত্তের মতো দেখায় এবং বৃত্তটি নিরক্ষরেখা থেকে যত দূরে সরে যায়, তত এটিকে (পর্দায়) ক্রমশ অ-বৃত্তাকার দেখায়।

একটি বৃত্ত যোগ করা

নিম্নলিখিত কোড স্নিপেটটি ম্যাপে একটি বৃত্ত যোগ করে:

সুইফট

let circleCenter = CLLocationCoordinate2D(latitude: 37.35, longitude: -122.0)
let circle = GMSCircle(position: circleCenter, radius: 1000)
circle.map = mapView
      

উদ্দেশ্য-সি

CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0);
GMSCircle *circle = [GMSCircle circleWithPosition:circleCenter
                                         radius:1000];
circle.map = mapView;
      

মানচিত্রে বৃত্তটি যুক্ত করার আগে এবং যুক্ত করার পরেও আপনি এর চেহারা পরিবর্তন করতে পারেন।

একটি বৃত্ত কাস্টমাইজ করা

আপনি GMSCircle এর প্রোপার্টি পরিবর্তন করে নিজস্ব রং এবং স্ট্রোকের প্রস্থ নির্দিষ্ট করতে পারেন। এটি নিম্নলিখিত অপশনগুলো সমর্থন করে:

fillColor
একটি UIColor অবজেক্ট যা বৃত্তের ভেতরের রঙ নির্দিষ্ট করে। ডিফল্টভাবে এটি স্বচ্ছ থাকে।
strokeColor
একটি UIColor অবজেক্ট যা বৃত্তের রূপরেখার রঙ নির্দিষ্ট করে। এর ডিফল্ট মান হলো blackColor
strokeWidth
বৃত্তের রূপরেখার পুরুত্ব, স্ক্রিন পয়েন্টে। এর ডিফল্ট মান ১। ম্যাপ জুম করা হলে এই পুরুত্ব পরিবর্তিত হয় না।

নিচের কোড স্নিপেটটি একটি পুরু লাল বৃত্ত যোগ করে, যার ভেতরে একটি আধা-স্বচ্ছ লাল আস্তরণ রয়েছে।

সুইফট

circle.fillColor = UIColor(red: 0.35, green: 0, blue: 0, alpha: 0.05)
circle.strokeColor = .red
circle.strokeWidth = 5
      

উদ্দেশ্য-সি

circle.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
circle.strokeColor = [UIColor redColor];
circle.strokeWidth = 5;
      

একটি ফাঁপা বহুভুজ তৈরি করা

আপনি একটি একক GMSPolygon অবজেক্টে একাধিক পাথ একত্রিত করে জটিল আকার তৈরি করতে পারেন, যেমন ভরাট করা রিং বা ডোনাট (যেখানে বহুভুজাকার ক্ষেত্রগুলি বহুভুজের ভিতরে পৃথক আকার হিসাবে প্রদর্শিত হয়)। জটিল আকারগুলি একাধিক পাথের সমন্বয়ে গঠিত।

একটি পাথ সহ একটি বহুভুজ তৈরি করুন যা বহুভুজটি দ্বারা আবৃত বৃহত্তম এলাকা নির্দিষ্ট করে। তারপর বহুভুজটির ' holes প্রপার্টিকে এক বা একাধিক GMSPath অবজেক্টের একটি অ্যারে হিসাবে নির্দিষ্ট করুন, যা বহুভুজটির ভেতরের ফাঁকা স্থানগুলো নির্ধারণ করে।

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

নিম্নলিখিত কোড নমুনাটি দুটি ছিদ্রযুক্ত একটি বহুভুজ তৈরি করে:

সুইফট

let hydeParkLocation = CLLocationCoordinate2D(latitude: -33.87344, longitude: 151.21135)
let camera = GMSCameraPosition.camera(withTarget: hydeParkLocation, zoom: 16)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.animate(to: camera)

let hydePark = "tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD"
let archibaldFountain = "tlvmEqq|y[NNCXSJQOB[TI"
let reflectionPool = "bewmEwk|y[Dm@zAPEj@{AO"

let hollowPolygon = GMSPolygon()
hollowPolygon.path = GMSPath(fromEncodedPath: hydePark)
hollowPolygon.holes = [GMSPath(fromEncodedPath: archibaldFountain)!, GMSPath(fromEncodedPath: reflectionPool)!]
hollowPolygon.fillColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.2)
hollowPolygon.strokeColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
hollowPolygon.strokeWidth = 2
hollowPolygon.map = mapView
      

উদ্দেশ্য-সি

CLLocationCoordinate2D hydeParkLocation = CLLocationCoordinate2DMake(-33.87344, 151.21135);
GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:hydeParkLocation
                                                           zoom:16];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

NSString *hydePark = @"tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD";
NSString *archibaldFountain = @"tlvmEqq|y[NNCXSJQOB[TI";
NSString *reflectionPool = @"bewmEwk|y[Dm@zAPEj@{AO";

GMSPolygon *hollowPolygon = [[GMSPolygon alloc] init];
hollowPolygon.path = [GMSPath pathFromEncodedPath:hydePark];
hollowPolygon.holes = @[[GMSPath pathFromEncodedPath:archibaldFountain],
                  [GMSPath pathFromEncodedPath:reflectionPool]];
hollowPolygon.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.2];
hollowPolygon.strokeColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
hollowPolygon.strokeWidth = 2;
hollowPolygon.map = mapView;