- if ( file_type == FILE_TYPE_GPSMAPPER )
- a_gpsmapper_write_file ( vtl, f );
- else if ( file_type == FILE_TYPE_GPX )
- a_gpx_write_file ( vtl, f );
- else
- a_gpspoint_write_file ( vtl, f );
+ if ( trk ) {
+ switch ( file_type ) {
+ case FILE_TYPE_GPX:
+ a_gpx_write_track_file ( trk, f );
+ break;
+ default:
+ g_critical("Houston, we've had a problem. file_type=%d", file_type);
+ }
+ } else {
+ switch ( file_type ) {
+ case FILE_TYPE_GPSMAPPER:
+ a_gpsmapper_write_file ( vtl, f );
+ break;
+ case FILE_TYPE_GPX:
+ a_gpx_write_file ( vtl, f );
+ break;
+ case FILE_TYPE_GPSPOINT:
+ a_gpspoint_write_file ( vtl, f );
+ break;
+ case FILE_TYPE_KML:
+ fclose ( f );
+ f = NULL;
+ switch ( a_vik_get_kml_export_units () ) {
+ case VIK_KML_EXPORT_UNITS_STATUTE:
+ return a_babel_convert_to ( vtl, "-o kml", filename, NULL, NULL );
+ break;
+ case VIK_KML_EXPORT_UNITS_NAUTICAL:
+ return a_babel_convert_to ( vtl, "-o kml,units=n", filename, NULL, NULL );
+ break;
+ default:
+ // VIK_KML_EXPORT_UNITS_METRIC:
+ return a_babel_convert_to ( vtl, "-o kml,units=m", filename, NULL, NULL );
+ break;
+ }
+ break;
+ default:
+ g_critical("Houston, we've had a problem. file_type=%d", file_type);
+ }
+ }