Class: Jekyll::MapTag

Inherits:
Liquid::Tag
  • Object
show all
Defined in:
lib/jekyll/map_tag.rb

Constant Summary collapse

MAPBOX_STATIC_BASE =

Mapbox

"https://api.mapbox.com/styles/v1/mapbox/%s/static"
MAPBOX_GEOCODE_BASE =
"https://api.mapbox.com/geocoding/v5/mapbox.places/%s.json"
MAPBOX_STYLE_ALIASES =
{
  "streets"   => "streets-v12",
  "satellite" => "satellite-v9",
  "outdoors"  => "outdoors-v12",
  "light"     => "light-v11",
  "dark"      => "dark-v11"
}.freeze
GOOGLE_STATIC_BASE =

Google

"https://maps.googleapis.com/maps/api/staticmap"
GOOGLE_GEOCODE_BASE =
"https://maps.googleapis.com/maps/api/geocode/json"
GOOGLE_MAPTYPE_ALIASES =
{
  "streets"  => "roadmap",
  "roadmap"  => "roadmap",
  "satellite" => "satellite",
  "terrain"  => "terrain",
  "hybrid"   => "hybrid"
}.freeze
DEFAULT_ZOOM =
13
DEFAULT_WIDTH =
800
DEFAULT_HEIGHT =
400
DEFAULT_PROVIDER =
"mapbox"

Instance Method Summary collapse

Constructor Details

#initialize(tag_name, markup, tokens) ⇒ MapTag

Returns a new instance of MapTag.



38
39
40
41
# File 'lib/jekyll/map_tag.rb', line 38

def initialize(tag_name, markup, tokens)
  super
  @raw_markup = markup.strip
end

Instance Method Details

#render(context) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/jekyll/map_tag.rb', line 43

def render(context)
  site       = context.registers[:site]
  map_config = site.config["map"] || {}
  params     = parse_markup(@raw_markup)

  provider = params["provider"] || map_config["provider"] || DEFAULT_PROVIDER

  zoom   = (params["zoom"]   || map_config["zoom"]   || DEFAULT_ZOOM).to_i
  width  = (params["width"]  || map_config["width"]  || DEFAULT_WIDTH).to_i
  height = (params["height"] || map_config["height"] || DEFAULT_HEIGHT).to_i
  marker = truthy?(params.fetch("marker", "true"))
  alt    = params["alt"] || "Map"

  case provider
  when "google"
    render_google(params, map_config, site, zoom, width, height, marker, alt)
  else
    render_mapbox(params, map_config, site, zoom, width, height, marker, alt)
  end
end