Add location marker icon and color rendering on the map.

This commit is contained in:
AdenKoperczak 2024-11-28 12:00:36 -05:00
parent 6da34fc151
commit 1a32748b8e
2 changed files with 11 additions and 9 deletions

View file

@ -31,9 +31,6 @@ static const std::string kLongitudeName_ = "longitude";
static const std::string kIconName_ = "icon"; static const std::string kIconName_ = "icon";
static const std::string kIconColorName_ = "icon-color"; static const std::string kIconColorName_ = "icon-color";
static const std::string defaultIconName = types::getMarkerIcons()[0].name;
static const boost::gil::rgba8_pixel_t defaultIconColor =
util::color::ToRgba8PixelT("#ffff0000");
class MarkerManager::Impl class MarkerManager::Impl
{ {
@ -94,6 +91,9 @@ public:
friend MarkerRecord tag_invoke(boost::json::value_to_tag<MarkerRecord>, friend MarkerRecord tag_invoke(boost::json::value_to_tag<MarkerRecord>,
const boost::json::value& jv) const boost::json::value& jv)
{ {
static const std::string defaultIconName = types::getMarkerIcons()[0].name;
static const boost::gil::rgba8_pixel_t defaultIconColor =
util::color::ToRgba8PixelT("#ffff0000");
const boost::json::object& jo = jv.as_object(); const boost::json::object& jo = jv.as_object();

View file

@ -2,7 +2,6 @@
#include <scwx/qt/manager/marker_manager.hpp> #include <scwx/qt/manager/marker_manager.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/qt/types/marker_types.hpp> #include <scwx/qt/types/marker_types.hpp>
#include <scwx/qt/types/texture_types.hpp>
#include <scwx/qt/gl/draw/geo_icons.hpp> #include <scwx/qt/gl/draw/geo_icons.hpp>
namespace scwx namespace scwx
@ -29,8 +28,6 @@ public:
void ConnectSignals(); void ConnectSignals();
MarkerLayer* self_; MarkerLayer* self_;
const std::string& markerIconName_ {
types::GetTextureName(types::ImageTexture::LocationMarker)};
std::shared_ptr<gl::draw::GeoIcons> geoIcons_; std::shared_ptr<gl::draw::GeoIcons> geoIcons_;
}; };
@ -59,9 +56,10 @@ void MarkerLayer::Impl::ReloadMarkers()
[this](const types::MarkerInfo& marker) [this](const types::MarkerInfo& marker)
{ {
std::shared_ptr<gl::draw::GeoIconDrawItem> icon = geoIcons_->AddIcon(); std::shared_ptr<gl::draw::GeoIconDrawItem> icon = geoIcons_->AddIcon();
geoIcons_->SetIconTexture(icon, markerIconName_, 0); geoIcons_->SetIconTexture(icon, marker.iconName, 0);
geoIcons_->SetIconLocation(icon, marker.latitude, marker.longitude); geoIcons_->SetIconLocation(icon, marker.latitude, marker.longitude);
geoIcons_->SetIconHoverText(icon, marker.name); geoIcons_->SetIconHoverText(icon, marker.name);
geoIcons_->SetIconModulate(icon, marker.iconColor);
}); });
geoIcons_->FinishIcons(); geoIcons_->FinishIcons();
@ -82,7 +80,11 @@ void MarkerLayer::Initialize()
DrawLayer::Initialize(); DrawLayer::Initialize();
p->geoIcons_->StartIconSheets(); p->geoIcons_->StartIconSheets();
p->geoIcons_->AddIconSheet(p->markerIconName_); for (auto& markerIcon : types::getMarkerIcons())
{
p->geoIcons_->AddIconSheet(
markerIcon.name, 0, 0, markerIcon.hotX, markerIcon.hotY);
}
p->geoIcons_->FinishIconSheets(); p->geoIcons_->FinishIconSheets();
p->ReloadMarkers(); p->ReloadMarkers();
@ -90,8 +92,8 @@ void MarkerLayer::Initialize()
void MarkerLayer::Render(const QMapLibre::CustomLayerRenderParameters& params) void MarkerLayer::Render(const QMapLibre::CustomLayerRenderParameters& params)
{ {
// auto markerManager = manager::MarkerManager::Instance();
gl::OpenGLFunctions& gl = context()->gl(); gl::OpenGLFunctions& gl = context()->gl();
context()->set_render_parameters(params);
DrawLayer::Render(params); DrawLayer::Render(params);