Map of the world that returns lat/lon coordinates
How can I create a map of the world that returns lat/lon coordinates when I click the mouse?
The example code creates a draw widget that displays an outline map of the world. By clicking the mouse at a map location the latitude/longitude coordinates of the location are returned to the user in a text widget.
; Event handler
PRO replace_latlon_event,event
s_name = TAG_NAMES(event,/STRUCTURE_NAME)
IF (s_name EQ 'WIDGET_BUTTON') THEN BEGIN
WIDGET_CONTROL,EVENT.TOP,/DESTROY
RETURN
ENDIF
IF (s_name EQ 'WIDGET_DRAW') THEN BEGIN
IF event.press EQ 1L THEN BEGIN
result = CONVERT_COORD(event.x,event.y,/DEVICE,/TO_DATA)
WIDGET_CONTROL,event.top,GET_UVALUE = info
result_string = 'longitude = '+STRING(result[0]) $
+' latitude = '+STRING(result[1])
WIDGET_CONTROL,info.text_base,SET_VALUE = result_string
ENDIF
ENDIF
END
;
; Main program
PRO replace_latlon
tlb = WIDGET_BASE(/COLUMN)
button_base = WIDGET_BUTTON(tlb,VALUE = 'DONE',UVALUE = 'UDONE')
draw_base = WIDGET_DRAW(tlb,/BUTTON_EVENTS,XSIZE=512,YSIZE=512)
text_base = WIDGET_TEXT(tlb)
WIDGET_CONTROL,tlb,/REALIZE
WIDGET_CONTROL,draw_base,GET_VALUE = draw_id
WSET,draw_id
MAP_SET,/CONTINENTS
info = {text_base:text_base}
WIDGET_CONTROL,tlb,SET_UVALUE = info
XMANAGER,'replace_latlon',tlb
END