Map view
Some resources that contain geospatial data can benefit from being displayed on a map. For resources to be displayed to the map view they require a coordinates
field, but that's customizable.
Enable map view
To enable map view for a resource, you need to add the map_view
class attribute to a resource. That will add the view switcher to the Index
view.
class Avo::Resources::City < Avo::BaseResource
# ...
self.map_view = {
mapkick_options: {
controls: true
},
record_marker: -> {
{
latitude: record.coordinates.first,
longitude: record.coordinates.last,
tooltip: record.name
}
},
table: {
visible: true,
layout: :right
}
}
end
WARNING
You need to add the mapkick-rb
(not mapkick
) gem to your Gemfile
and have the MAPBOX_ACCESS_TOKEN
environment variable with a valid Mapbox key.
-> mapkick_options
The options you pass here are forwarded to the mapkick
gem.
-> record_marker
You may use this block to fetch the coordinates from other places (API calls, cache queries, etc.) rather than the database.
This block has to return a hash compatible with the PointMap
items. Has to have latitude
and longitude
and optionally tooltip
, label
, or color
.
-> table
-> extra_markers
Allow to define extra markers. The extra_markers
block is executed in the ExecutionContext
and should return an array of hashes.
For each extra marker, you can specify a label, tooltip, and color.
self.map_view = {
# ...
extra_markers: -> do
[
{
latitude: 37.780411,
longitude: -25.497047,
label: "Açores",
tooltip: "São Miguel",
color: "#0F0"
}
]
end,
# ...
}
Make it the default view
To make the map view the default way of viewing a resource on Index
, we have to use the default_view_type
class attribute.
class Avo::Resources::City < Avo::BaseResource
self.default_view_type = :map
end