iOS-এর জন্য Maps SDK-এর স্টাইল রেফারেন্স

প্ল্যাটফর্ম বেছে নিন: Android iOS JavaScript

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

উদাহরণ

নিচে উল্লেখ করা JSON স্টাইল ঘোষণা সব ম্যাপ ফিচারকে ধূসর রঙে পরিবর্তন করে, তারপর নীল রঙে ধমনী সংক্রান্ত রাস্তার জ্যামিতি রঙ করে এবং ল্যান্ডস্কেপ লেবেল সম্পূর্ণভাবে লুকিয়ে দেয়:

[
  {
    "featureType": "all",
    "stylers": [
      { "color": "#C0C0C0" }
    ]
  },{
    "featureType": "road.arterial",
    "elementType": "geometry",
    "stylers": [
      { "color": "#CCFFFF" }
    ]
  },{
    "featureType": "landscape",
    "elementType": "labels",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

JSON অবজেক্ট

JSON স্টাইলের ঘোষণায় নিম্নলিখিত এলিমেন্ট থাকে:

  • featureType (ঐচ্ছিক) - এই স্টাইল পরিবর্তন করার জন্য বেছে নেওয়ার ফিচার । ফিচার হল ম্যাপের ভৌগোলিক বৈশিষ্ট্য, যার মধ্যে রাস্তা, পার্ক, জলাশয় ও আরও অনেক কিছু পড়ে। আপনি কোনও ফিচার নির্দিষ্ট না করলে, সব ফিচার বেছে নেওয়া হয়।
  • elementType (ঐচ্ছিক) - বেছে নেওয়ার জন্য নির্দিষ্ট করা ফিচারের প্রপার্টি। এলিমেন্ট হল ফিচারের সাব-পার্ট, যার মধ্যে লেবেল ও জ্যামিতি অন্তর্ভুক্ত। আপনি কোনও এলিমেন্ট নির্দিষ্ট না করলে, ফিচারের সব এলিমেন্ট বেছে নেওয়া হয়।
  • stylers - বেছে নেওয়া ফিচার ও এলিমেন্টের উপর প্রয়োগ করার নিয়ম। স্টাইলার ফিচারটির রঙ, দৃশ্যমানতা ও গুরুত্ব নির্দেশ করে। আপনি কোনও ফিচারে এক বা একাধিক স্টাইলার প্রয়োগ করতে পারবেন।

স্টাইল নির্দিষ্ট করতে, আপনাকে অবশ্যই featureType এবং elementType সিলেক্টরের একটি সেট এবং আপনার stylers একটি স্টাইল অ্যারেতে একত্রিত করতে হবে। আপনি একটি অ্যারেতে ফিচারের যেকোনও কম্বিনেশন টার্গেট করতে পারবেন। তবে, একসাথে প্রয়োগ করা যায় এমন স্টাইলের সংখ্যা সীমিত। আপনার স্টাইল অ্যারেতে অক্ষরের সংখ্যা সর্বাধিক সীমা অতিক্রম করলে কোনও স্টাইল প্রয়োগ করা হয় না।

এই পৃষ্ঠার বাকি অংশে ফিচার, এলিমেন্ট ও স্টাইলার সম্পর্কে আরও তথ্য দেওয়া আছে।

featureType

নিম্নলিখিত JSON স্নিপেট ম্যাপের সব রাস্তা বেছে নেয়:

{
  "featureType": "road"
}

ফিচার বা ফিচারের ধরন হল ম্যাপে থাকা ভৌগোলিক বৈশিষ্ট্য, এর মধ্যে রাস্তা, পার্ক, জলাশয়, ব্যবসা এবং আরও অনেক কিছু পড়ে।

ফিচারগুলি একটি বিভাগীয় ট্রি তৈরি করে, যার মূল হল all । আপনি কোনও ফিচার নির্দিষ্ট না করলে, সব ফিচার বেছে নেওয়া হয়। all-এর কোনও ফিচার নির্দিষ্ট করলেও একই প্রভাব পড়ে।

কিছু ফিচারে চাইল্ড ফিচার থাকে যা আপনি ডট নোটেশন ব্যবহার করে নির্দিষ্ট করেন। যেমন, landscape.natural বা road.local. আপনি যদি শুধু পেরেন্ট ফিচার উল্লেখ করেন, যেমন road, তাহলে পেরেন্টের জন্য উল্লেখ করা স্টাইল তার সব চাইল্ডের ক্ষেত্রে প্রযোজ্য হয়, যেমন road.local এবং road.highway।

মনে রাখবেন, পেরেন্ট ফিচারে এমন কিছু এলিমেন্ট থাকতে পারে যা সেটির সব চাইল্ড ফিচারে অন্তর্ভুক্ত থাকে না।

নিম্নলিখিত ফিচারগুলি উপলভ্য:

  • all (ডিফল্ট) সব ফিচার বেছে নেয়।
  • administrative সব প্রশাসনিক এলাকা বেছে নেয়। স্টাইলিং শুধুমাত্র প্রশাসনিক এলাকার লেবেলের উপর প্রভাব ফেলে, ভৌগোলিক সীমানা বা ফিল কালারের উপর নয়।
    • administrative.country দেশ বেছে নেয়।
    • administrative.land_parcel জমির পার্সেল বেছে নেয়।
    • administrative.locality লোকালিটি বেছে নেয়।
    • administrative.neighborhood আশেপাশের এলাকা বেছে নেয়।
    • administrative.province প্রদেশ বেছে নেয়।
  • landscape সব ল্যান্ডস্কেপ বেছে নেয়।
    • landscape.man_made বিল্ডিং ও অন্যান্য কাঠামোর মতো মানুষের তৈরি ফিচার বেছে নেয়।
    • landscape.natural পর্বত, নদী, মরুভূমি ও হিমবাহের মতো প্রাকৃতিক ফিচার বেছে নেয়।
    • landscape.natural.landcover ল্যান্ড কভার ফিচার বেছে নেয়, যা হল পৃথিবীর উপরিভাগকে ঢেকে রাখা ভৌত উপাদান, যেমন বন, তৃণভূমি, জলাভূমি এবং খালি জমি।
    • landscape.natural.terrain কোনও ভূখণ্ডের সারফেসের বৈশিষ্ট্য বেছে নেয়, যেমন উচ্চতা, ঢাল এবং ওরিয়েন্টেশন।
  • poi সব উল্লেখযোগ্য স্থান বেছে নেয়।
    • poi.attraction পর্যটকদের জন্য আকর্ষণীয় স্থান বেছে নেয়।
    • poi.businessটি ব্যবসা বেছে নেওয়া হয়েছে।
    • poi.government সরকারি বিল্ডিং বেছে নেয়।
    • poi.medical হাসপাতাল, ফার্মেসি, পুলিশ, ডাক্তার ও অন্যান্য জরুরি পরিষেবা বেছে নেয়।
    • poi.park পার্ক বেছে নেয়।
    • poi.place_of_worship উপাসনার স্থান বেছে নেয়, যার মধ্যে গির্জা, মন্দির, মসজিদ ও অন্যান্য স্থান পড়ে।
    • poi.school স্কুল বেছে নেয়।
    • poi.sports_complex স্পোর্টস কমপ্লেক্স বেছে নেয়।
  • road সব রাস্তা বেছে নেয়।
    • road.arterial প্রধান রাস্তা বেছে নেয়।
    • road.highway হাইওয়ে বেছে নেয়।
    • road.highway.controlled_access নিয়ন্ত্রিত অ্যাক্সেস সহ হাইওয়ে বেছে নেয়।
    • road.local স্থানীয় রাস্তা বেছে নেয়।
  • transit সব ট্রানজিট স্টেশন ও লাইন বেছে নেয়।
    • transit.line ট্রানজিট লাইন বেছে নেয়।
    • transit.station সব ট্রানজিট স্টেশন বেছে নেয়।
    • transit.station.airportটি বিমানবন্দর বেছে নেয়।
    • transit.station.bus বাস স্টপ বেছে নেয়।
    • transit.station.railটি রেল স্টেশন বেছে নেওয়া হয়েছে।
  • water জলাশয় বেছে নেয়।

elementType

নিম্নলিখিত JSON স্নিপেট সব স্থানীয় রাস্তার জন্য লেবেল বেছে নেয়:

{
  "featureType": "road.local",
  "elementType": "labels"
}

এলিমেন্ট হল কোনও ফিচারের সাবডিভিশন। যেমন, একটি রাস্তার মধ্যে ম্যাপে গ্রাফিক্যাল লাইন (জিওমেট্রি) এবং তার নাম (লেবেল) বোঝানো টেক্সট থাকে।

নিম্নলিখিত এলিমেন্টগুলি উপলভ্য, তবে মনে রাখবেন যে কোনও নির্দিষ্ট ফিচার কোনও এলিমেন্ট, কিছু এলিমেন্ট বা সব এলিমেন্টকে সমর্থন করতে পারে:

জুম লেভেলের উপর ভিত্তি করে লেবেলের টেক্সট fill ও stroke রঙ পরিবর্তন হয়। বিভিন্ন জুম লেভেল জুড়ে অভিজ্ঞতা সামঞ্জস্যপূর্ণ করতে, সবসময় fill ও stroke দু'টিই সংজ্ঞায়িত করুন।

  • all (ডিফল্ট) নির্দিষ্ট ফিচারের সব এলিমেন্ট বেছে নেয়।
  • geometry নির্দিষ্ট ফিচারের সব জ্যামিতিক এলিমেন্ট বেছে নেয়।
    • geometry.fill শুধুমাত্র ফিচারের জ্যামিতির ফিল বেছে নেয়।
    • geometry.stroke শুধুমাত্র ফিচারের জিওমেট্রির স্ট্রোক বেছে নেয়।
  • labels নির্দিষ্ট ফিচারের সাথে যুক্ত টেক্সচুয়াল লেবেল বেছে নেয়।
    • labels.icon শুধুমাত্র ফিচারের লেবেলের মধ্যে দেখানো আইকন বেছে নেয়।
    • labels.text শুধুমাত্র লেবেলের টেক্সট বেছে নেয়।
    • labels.text.fill শুধুমাত্র লেবেলের ফিল বেছে নেয়। লেবেলের ফিল সাধারণত লেবেল টেক্সটের চারপাশে একটি রঙিন আউটলাইন হিসেবে রেন্ডার করা হয়।
    • labels.text.stroke শুধুমাত্র লেবেলের টেক্সটের স্ট্রোক বেছে নেয়।

stylers

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

নিচের JSON স্নিপেটে একটি ফিচারকে উজ্জ্বল সবুজ হিসেবে দেখানো হয়েছে, এর জন্য RGB ভ্যালু ব্যবহার করা হয়েছে:

"stylers": [
  { "color": "#99FF33" }
]

এই স্নিপেট কোনও ফিচারের রঙ থেকে সব ইনটেনসিটি সরিয়ে দেয়, সেটির প্রাথমিক রঙ যাই হোক না কেন। ফিচারটি গ্রেস্কেলে রেন্ডার করা হল:

"stylers": [
  { "saturation": -100 }
]

এই স্নিপেট কোনও ফিচার সম্পূর্ণভাবে লুকিয়ে দেয়:

    "stylers": [
      { "visibility": "off" }
    ]

নিম্নলিখিত স্টাইল বিকল্পগুলি কাজ করে:

  • hue (format #RRGGBB-এর একটি RGB হেক্স স্ট্রিং) প্রাথমিক রঙ নির্দেশ করে।

    মনে রাখবেন: এই বিকল্পটি ডিফল্ট Google স্টাইলে (অথবা আপনি ম্যাপে সংজ্ঞায়িত করা অন্যান্য স্টাইল বিকল্পে) নির্দিষ্ট করা স্যাচুরেশন এবং লাইটনেস রাখার সময় হিউ সেট করে। ফলাফল হিসেবে পাওয়া রঙটি বেস ম্যাপের স্টাইলের সাথে সম্পর্কিত। Google যদি বেস ম্যাপ স্টাইলে কোনও পরিবর্তন করে, তাহলে সেই পরিবর্তন hue-এর মাধ্যমে স্টাইল করা আপনার ম্যাপের ফিচারকে প্রভাবিত করবে। আপনি যদি পারেন, তাহলে অ্যাবসোলিউট color স্টাইলার ব্যবহার করা ভালো।

  • lightness (-100 ও 100-এর মধ্যে ফ্লোটিং পয়েন্ট ভ্যালু) এলিমেন্টের উজ্জ্বলতার শতকরা পরিবর্তন নির্দেশ করে। নেগেটিভ ভ্যালু অন্ধকার বাড়ায় (যেখানে -১০০ কালো রঙকে নির্দিষ্ট করে) এবং পজিটিভ ভ্যালু উজ্জ্বলতা বাড়ায় (যেখানে +১০০ সাদা রঙকে নির্দিষ্ট করে)।

    মনে রাখবেন: এই বিকল্পটি ডিফল্ট Google স্টাইলে (অথবা আপনার ম্যাপে নির্দিষ্ট করা অন্যান্য স্টাইল বিকল্পে) নির্দিষ্ট করা স্যাচুরেশন ও হিউ ঠিক রেখে লাইটনেস সেট করে। ফলাফল হিসেবে পাওয়া রঙটি বেস ম্যাপের স্টাইলের সাথে সম্পর্কিত। Google যদি বেস ম্যাপ স্টাইলে কোনও পরিবর্তন করে, তাহলে সেই পরিবর্তন lightness-এর মাধ্যমে স্টাইল করা আপনার ম্যাপের ফিচারকে প্রভাবিত করে। আপনি যদি পারেন, তাহলে অ্যাবসোলিউট color স্টাইলার ব্যবহার করা ভালো।

  • saturation (-100 ও 100-এর মধ্যে একটি ফ্লোটিং পয়েন্ট ভ্যালু) এলিমেন্টে প্রয়োগ করার জন্য প্রাথমিক রঙের তীব্রতায় শতাংশের পরিবর্তন নির্দেশ করে।

    মনে রাখবেন: এই বিকল্পটি ডিফল্ট Google স্টাইলে (অথবা আপনার ম্যাপে সংজ্ঞায়িত করা অন্যান্য স্টাইল বিকল্পে) নির্দিষ্ট করা হিউ এবং লাইটনেস রাখার সময় স্যাচুরেশন সেট করে। যে রঙটি পাওয়া যায় তা বেস ম্যাপের স্টাইলের সাথে সম্পর্কিত। Google যদি বেস ম্যাপ স্টাইলে কোনও পরিবর্তন করে, তাহলে সেই পরিবর্তন saturation-এর মাধ্যমে স্টাইল করা আপনার ম্যাপের ফিচারকে প্রভাবিত করবে। আপনি পারলে নিরপেক্ষ color স্টাইলার ব্যবহার করা ভাল।

  • gamma (0.01 ও 10.0-এর মধ্যে ফ্লটিং পয়েন্ট ভ্যালু, যেখানে 1.0 কোনও সংশোধন প্রয়োগ করে না) থেকে এলিমেন্টে প্রয়োগ করার গামা সংশোধনের পরিমাণ বোঝা যায়। গামা কারেকশন নন-লিনিয়ার পদ্ধতিতে রঙের উজ্জ্বলতা পরিবর্তন করে, তবে সাদা বা কালো ভ্যালুর উপর কোনও প্রভাব ফেলে না। একাধিক এলিমেন্টের কনট্রাস্ট পরিবর্তন করতে সাধারণত গামা কারেকশন ব্যবহার করা হয়। যেমন, আপনি গামা পরিবর্তন করে এলিমেন্টের এজ ও ভেতরের কনট্রাস্ট বাড়াতে বা কমাতে পারেন।

    মনে রাখবেন: এই বিকল্পটি গামা কার্ভ ব্যবহার করে ডিফল্ট Google স্টাইলের সাথে তুলনামূলকভাবে লাইটনেস অ্যাডজাস্ট করে। Google যদি বেস ম্যাপের স্টাইলে কোনও পরিবর্তন করে, তাহলে সেই পরিবর্তন আপনার ম্যাপের gamma-এর মাধ্যমে স্টাইল করা ফিচারের উপর প্রভাব ফেলে। আপনি পারলে, অ্যাবসলিউট color স্টাইলার ব্যবহার করা ভাল।

  • invert_lightness (যদি true হয়) আগের উজ্জ্বলতা উল্টে দেয়। এটি উপযোগী, যেমন, সাদা টেক্সট সহ ডার্ক ম্যাপে দ্রুত পরিবর্তন করার জন্য।

    মনে রাখবেন: এই বিকল্পটি শুধু ডিফল্ট Google স্টাইলকে ইনভার্ট করে। Google বেস ম্যাপ স্টাইলে কোনও পরিবর্তন করলে, সেই পরিবর্তন invert_lightness-এর মাধ্যমে স্টাইল করা আপনার ম্যাপের ফিচারকে প্রভাবিত করে। আপনি পারলে নিরপেক্ষ color স্টাইলার ব্যবহার করা ভাল।

  • visibility (on, off, অথবা simplified) ম্যাপে এলিমেন্টটি দেখা যাবে কিনা এবং কীভাবে দেখা যাবে তা নির্দেশ করে। simplified দৃশ্যমানতা প্রভাবিত ফিচার থেকে কিছু স্টাইল ফিচার সরিয়ে দেয় ; যেমন, রাস্তাগুলিকে আউটলাইন ছাড়াই আরও সরু লাইন হিসেবে দেখানো হয়, অন্যদিকে পার্কের লেবেল টেক্সট সরিয়ে দেওয়া হলেও লেবেল আইকন থেকে যায়।
  • color (format #RRGGBB-এর একটি RGB হেক্স স্ট্রিং) ফিচারটির রঙ সেট করে।
  • weight (একটি পূর্ণসংখ্যা মান, শূন্যের থেকে বড় বা সমান) পিক্সেলের মধ্যে ফিচারের ওজন সেট করে। ওজন বেশি সেট করলে, টাইল বর্ডারের কাছাকাছি ক্লিপিং হতে পারে।

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

মনে রাখবেন: ক্রম গুরুত্বপূর্ণ, কারণ কিছু অপারেশন পরিবর্তনশীল নয়। স্টাইল অপারেশন (সাধারণত) আগেই আছে এমন ফিচার এবং/অথবা এলিমেন্ট পরিবর্তন করা হয়। আগে থেকে থাকা স্টাইল থাকলে, অপারেশন সেগুলির উপর কাজ করে।

হিউ, স্যাচুরেশন, লাইটনেস মডেল

স্টাইলার অপারেশনের মধ্যে রঙ বোঝাতে স্টাইল করা ম্যাপ হিউ, স্যাচুরেশন, লাইটনেস (HSL) মডেল ব্যবহার করে। হিউ থেকে প্রাথমিক রঙ, স্যাচুরেশন থেকে সেই রঙের তীব্রতা এবং লাইটনেস থেকে সেই রঙের মধ্যে সাদা বা কালোর তুলনামূলক পরিমাণ বোঝা যায়।

গামা সংশোধন কালার স্পেসের উপর লাইটনেস পরিবর্তন করে, সাধারণত কনট্রাস্ট বাড়াতে বা কমাতে। এছাড়াও, HSL মডেল একটি কোঅর্ডিনেট স্পেসের মধ্যে কালার নির্ধারণ করে, যেখানে hue কালার হুইলের মধ্যে ওরিয়েন্টেশন নির্দেশ করে, স্যাচুরেশন ও লাইটনেস বিভিন্ন অ্যাক্সিস বরাবর অ্যামপ্লিটিউড নির্দেশ করে। RGB কালার স্পেসের মধ্যে হিউ পরিমাপ করা হয়, যা বেশিরভাগ RGB কালার স্পেসের মতোই, তবে সাদা ও কালো রঙের শেড থাকে না।

হিউ, স্যাচুরেশন, লাইটনেস মডেল

hue-এ HTML হেক্স কালার ভ্যালু ব্যবহার করা হলেও, এটি শুধুমাত্র এই ভ্যালু ব্যবহার করে বেসিক কালার নির্ধারণ করে - অর্থাৎ, কালার হুইলে এর ওরিয়েন্টেশন, এর স্যাচুরেশন বা লাইটনেস নয়, যা শতকরা পরিবর্তন হিসেবে আলাদাভাবে দেখানো হয়।

যেমন, আপনি খাঁটি সবুজের জন্য হিউকে hue:0x00ff00 বা hue:0x000100 হিসেবে সংজ্ঞায়িত করতে পারেন। দুটি রঙই একই রকম। দুটি ভ্যালুই HSL কালার মডেলে খাঁটি সবুজ রঙকে পয়েন্ট করে।

একটি RGB কালার হুইল

সমান অংশ লাল, সবুজ ও নীল নিয়ে গঠিত RGB hue ভ্যালু কোনও হিউ নির্দেশ করে না, কারণ সেইসব ভ্যালুর কোনওটিই HSL কোঅর্ডিনেট স্পেসে কোনও ওরিয়েন্টেশন নির্দেশ করে না। উদাহরণ হল "#000000" (কালো), "#FFFFFF" (সাদা), এবং ধূসর রঙের সব শেড। কালো, সাদা বা ধূসর রঙ বোঝাতে, আপনাকে অবশ্যই সব saturation সরিয়ে দিতে হবে (ভ্যালু -100 হিসেবে সেট করুন) এবং পরিবর্তে lightness অ্যাডজাস্ট করতে হবে।

এছাড়াও, আগে থেকেই কালার স্কিম আছে এমন ফিচার পরিবর্তন করার সময়, hue-এর মতো কোনও ভ্যালু পরিবর্তন করলে, আগে থেকেই থাকা saturation বা lightness-এ কোনও পরিবর্তন হয় না।