Skip to content

Commit

Permalink
map: add altitude information to click data
Browse files Browse the repository at this point in the history
  • Loading branch information
peterbarker authored and tridge committed Jan 24, 2024
1 parent 0d79a56 commit 2f0a2ff
Showing 1 changed file with 44 additions and 7 deletions.
51 changes: 44 additions & 7 deletions MAVProxy/modules/mavproxy_map/mp_slipmap_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,8 @@ def __init__(self, parent, state):
self.mouse_down = None
self.click_pos = None
self.last_click_pos = None
self.last_click_pos_used_for_text = None
self.last_terrain_height = None
if state.elevation != "None":
state.ElevationMap = mp_elevation.ElevationModel(database=state.elevation)

Expand Down Expand Up @@ -486,21 +488,56 @@ def update_position(self):
if alt == -1:
newtext += ' SRTM Downloading '
newtext += '\n'
if self.click_pos is not None:
newtext += 'Click: %.8f %.8f (%s %s) (%s)' % (self.click_pos[0], self.click_pos[1],
mp_util.degrees_to_dms(self.click_pos[0]),
mp_util.degrees_to_dms(self.click_pos[1]),
mp_util.latlon_to_grid(self.click_pos))

self.update_click_position_text()

def update_click_position_text(self):
if self.click_pos is None:
return
if self.click_pos == self.last_click_pos:
return

if self.click_pos == self.last_click_pos_used_for_text:
return

terrain_height = None
terrain_height_str = "?"
if self.state.elevation != "None":
terrain_height = self.state.ElevationMap.GetElevation(self.click_pos[0], self.click_pos[1])
if terrain_height is not None:
terrain_height_str = ' %.1fm' % (terrain_height,)

newtext = 'Click: %.8f %.8f %s (%s %s) (%s)' % (
self.click_pos[0],
self.click_pos[1],
terrain_height_str,
mp_util.degrees_to_dms(self.click_pos[0]),
mp_util.degrees_to_dms(self.click_pos[1]),
mp_util.latlon_to_grid(self.click_pos)
)

if self.last_click_pos is not None:
# provide information about the differences between the
# previous click position:
distance = mp_util.gps_distance(self.last_click_pos[0], self.last_click_pos[1],
self.click_pos[0], self.click_pos[1])
bearing = mp_util.gps_bearing(self.last_click_pos[0], self.last_click_pos[1],
self.click_pos[0], self.click_pos[1])
newtext += ' Distance: %.3fm %.3fnm Bearing %.1f' % (distance, distance*0.000539957, bearing)
if newtext != state.oldtext:
if terrain_height == "?":
self.last_terrain_height = None
else:
if self.last_terrain_height is not None:
delta = terrain_height - self.last_terrain_height
newtext += " (height %f)" % (delta, )
self.last_terrain_height = terrain_height

if newtext != self.state.oldtext:
self.position.Clear()
self.position.WriteText(newtext)
state.oldtext = newtext
self.state.oldtext = newtext

self.last_click_pos_used_for_text = self.click_pos

def pixel_coords(self, latlon, reverse=False):
'''return pixel coordinates in the map image for a (lat,lon)
Expand Down

0 comments on commit 2f0a2ff

Please sign in to comment.