class Jekyll::Maps::GoogleMapApi

Constants

HEAD_END_TAG

Public Class Methods

prepend_api_code(doc) click to toggle source
# File lib/jekyll-maps/google_map_api.rb, line 7
def prepend_api_code(doc)
  @config = doc.site.config
  if doc.output =~ HEAD_END_TAG
    # Insert API code before header's end if this document has one.
    doc.output.gsub!(HEAD_END_TAG, %(#{api_code}#{Regexp.last_match}))
  else
    doc.output.prepend(api_code)
  end
end

Private Class Methods

api_code() click to toggle source
# File lib/jekyll-maps/google_map_api.rb, line 18
        def api_code
          <<HTML
<script type='text/javascript'>
  #{js_lib_contents}
</script>
#{load_google_maps_api}
#{load_marker_cluster}
HTML
        end
js_lib_contents() click to toggle source
# File lib/jekyll-maps/google_map_api.rb, line 51
def js_lib_contents
  @js_lib_contents ||= begin
    File.read(js_lib_path)
  end
end
js_lib_path() click to toggle source
# File lib/jekyll-maps/google_map_api.rb, line 58
def js_lib_path
  @js_lib_path ||= begin
    File.expand_path("./google_map_api.js", File.dirname(__FILE__))
  end
end
load_google_maps_api() click to toggle source
# File lib/jekyll-maps/google_map_api.rb, line 29
        def load_google_maps_api
          api_key = @config.fetch("maps", {})
            .fetch("google", {})
            .fetch("api_key", "")
          <<HTML
<script async defer src='https://maps.googleapis.com/maps/api/js?key=#{api_key}&callback=#{Jekyll::Maps::GoogleMapTag::JS_LIB_NAME}.initializeMap'></script>
HTML
        end
load_marker_cluster() click to toggle source
# File lib/jekyll-maps/google_map_api.rb, line 39
        def load_marker_cluster
          settings = @config.fetch("maps", {})
            .fetch("google", {})
            .fetch("marker_cluster", {})
          return unless settings.fetch("enabled", true)
          <<HTML
<script async defer src='https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/src/markerclusterer.js'
        onload='#{Jekyll::Maps::GoogleMapTag::JS_LIB_NAME}.initializeCluster(#{settings.to_json})'></script>
HTML
        end