diff --git a/firmware/application/ui/ui_geomap.cpp b/firmware/application/ui/ui_geomap.cpp index a8a47fd6e40109991c0d597d91f7c72965959bdc..a750c5fb6e384e121b2b0738bd7685912cbd56e0 100644 --- a/firmware/application/ui/ui_geomap.cpp +++ b/firmware/application/ui/ui_geomap.cpp @@ -147,7 +147,7 @@ GeoMap::GeoMap( } void GeoMap::paint(Painter& painter) { - Coord line; + u_int16_t line; std::array<ui::Color, 240> map_line_buffer; const auto r = screen_rect(); @@ -168,7 +168,7 @@ void GeoMap::paint(Painter& painter) { display.fill_rectangle({ r.center() - Point(16, 1), { 32, 2 } }, Color::red()); display.fill_rectangle({ r.center() - Point(1, 16), { 2, 32 } }, Color::red()); } else { - draw_bearing({ 120, 32 + 144 }, angle_, 16, Color::red()); + draw_bearing({ 120, 32 + 144 }, angle_, 10, Color::red()); painter.draw_string({ 120 - ((int)tag_.length() * 8 / 2), 32 + 144 - 32 }, style(), tag_); } } @@ -191,10 +191,10 @@ void GeoMap::move(const float lon, const float lat) { Rect map_rect = screen_rect(); - // Map is in Equidistant "Plate Carrée" projection - x_pos = map_center_x - (map_rect.width() / 2) + (lon_ / lon_ratio); - y_pos = map_center_y - (map_rect.height() / 2) + (lat_ / lat_ratio) + 16; - + // Using WGS 84/Pseudo-Mercator projection + x_pos = map_width * (lon_+180)/360 - (map_rect.width() / 2); + y_pos = (0.5-lat_/(340.1206913+-4.21807e-5*pow((double)abs(lat_),3.4198394))) * map_height -(map_rect.height() / 1) + 32; + // Cap position if (x_pos > (map_width - map_rect.width())) x_pos = map_width - map_rect.width(); @@ -228,8 +228,8 @@ void GeoMap::draw_bearing(const Point origin, const uint32_t angle, uint32_t siz for (size_t thickness = 0; thickness < 3; thickness++) { arrow_a = polar_to_point(angle, size) + origin; - arrow_b = polar_to_point(angle + 180 - 30, size) + origin; - arrow_c = polar_to_point(angle + 180 + 30, size) + origin; + arrow_b = polar_to_point(angle + 180 - 35, size) + origin; + arrow_c = polar_to_point(angle + 180 + 35, size) + origin; display.draw_line(arrow_a, arrow_b, color); display.draw_line(arrow_b, arrow_c, color); diff --git a/sdcard/ADSB/world_map.jpg b/sdcard/ADSB/world_map.jpg index a57b8291683fe35a9058ebda1282d5634d90ff9a..3be948bb40b08aa69c91731108c2ebcd2122d89a 100644 Binary files a/sdcard/ADSB/world_map.jpg and b/sdcard/ADSB/world_map.jpg differ